-
怎样用后台程序登陆win710
问题描述:我实现了一个socket,服务端在pc上,客户端在一台Android手机上。现在已经实现了两者的通信。
我的问题的是:当win7进入锁定状态,就是要那个输入密码才能进入系统的界面。我想用手机给PC上运行的服务端程序发一条指令,能实现登陆到windows里的效果。多谢指教。
问题补充:泰山宏图 写道你的问题是否类似于电脑的远程登录?
不是的。这个是要在系统内部一个程序里面发出命令。
问题补充:khan 写道只能telnet了,兄弟!
telnet命令选项里面,连password这项都没有,要怎么做呢?
问题补充:khan 写道有啊,package com.surekam.collie.collecter.task.conn.inst; import com.surekam.collie.collecter.task.conn.AbsActiveConn; import com.surekam.collie.model.collecter.ProtocolDetail; import com.surekam.conf.api.ConfigManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.telnet.TelnetClient; import java.io.InputStream; import java.io.PrintStream; import java.util.Map; import java.util.concurrent.*; public class TelnetNConn extends AbsActiveConn implements Callable{ private final static Log log = LogFactory.getLog(TelnetNConn.class); private TelnetClient telnetSession; private String destAddress; private int destPort = 23; private String destUser; private String destPWD ; private String terminalEnv; private final String TIMEOUT = "telnetTimeOut"; private long timeout = 40000; private String userPrompt = "ogin: "; private String passPrompt = ": "; private String prompt = "$ "; private boolean isLogin = false; private ExecutorService executor; //异步执行传入命令 /** * telnet 连接初始化 */ public void init(ProtocolDetail protocolDetail) throws Exception { /** * 参数,成员初始处理 */ Map<String, String> params = protocolDetail.getParamsMap(); destAddress = params.get("IP").trim(); destUser = params.get("USER"); destPWD = params.get("PASSWORD"); terminalEnv = params.get("TERMINALENV"); //终端模拟,如使用不正确可能导致采集结果返回乱码,数值主要包括:VT220、VT100、LINUX等 destPort = Integer.parseInt(params.get("PORT")); prompt = params.get("PROMPT").trim(); terminalEnv = null==terminalEnv||terminalEnv.trim().length()<1?"VT100":""; timeout = Long.parseLong(ConfigManager.getInstance().getConfiger().getParameter(TIMEOUT)); executor = Executors.newSingleThreadExecutor(); //命令任务处理 /** * 连接初始处理 */ try{ telnetSession = new TelnetClient(terminalEnv); telnetSession.setReaderThread(false); telnetSession.connect(destAddress, destPort); login(destUser,destPWD); }catch (Exception e){ e.printStackTrace(); } } /** * 登陆到telnet服务端 * @param destUser * @param destPWD */ private void login(String destUser, String destPWD) { try{ if(telnetSession.isConnected()){ sendString(""); String welcomeInfo = (String)call(); // log.info("welcome:"+welcomeInfo); sendString(destUser); String fillUserInfo = (String)call(); // log.info("fillUserInfo:"+fillUserInfo); sendString(destPWD); String fillPWDInfo = (String)call(); // log.info("filePWD:"+fillPWDInfo); /** * 根据填充完密码返回信息 * 判断登陆是否成功 */ if(fillPWDInfo.trim().endsWith(prompt.trim())){ isLogin = true; } } }catch (Exception e){ e.printStackTrace(); } } /** * telnet连接后执行系统指令 * @param cmd * @return * @throws Exception */ public Object execCommand(final String cmd) throws Exception { // log.info("isLogin:"+isLogin); if(isLogin){ sendString(cmd); Future future = executor.submit(this); return future.get(timeout,TimeUnit.MILLISECONDS); }else{ throw new Exception("连接问题导致连接异常"); } } /** * 发送指令到telnet服务端 * @param s * @throws Exception */ private void sendString(String s) throws Exception { PrintStream os = new PrintStream(telnetSession.getOutputStream()); os.println(s); os.flush(); } /** * 读取telnet服务端返回数据 * @return * @throws Exception */ public Object call() throws Exception { InputStream inputStream = telnetSession.getInputStream(); StringBuffer stringBuffer = new StringBuffer(); try { byte[] buff = new byte[1024]; int ret_read = 0; boolean loopFlag = true; while (loopFlag && ret_read >= 0){ /** * 读取数据 */ ret_read = inputStream.read(buff); if (ret_read > 0) { String temp = new String(buff, 0, ret_read); stringBuffer.append(temp); } /** * 判断返回 */ if(isLogin){ //login的情况下不处理冒号 if(stringBuffer.toString().trim().endsWith(prompt.trim())){ loopFlag = false; } }else { // 登陆成功只判断命令提示符 if(stringBuffer.toString().trim().endsWith(":")||stringBuffer.toString().trim().endsWith(prompt.trim())){ loopFlag = false; } } } } catch (Exception e) { log.debug("telnet读取命令返回数据错误",e); } return new String(stringBuffer.toString().getBytes(),"utf-8"); } /** * 适配抽象方法 * @return */ public Object getInnerConnection() { throw new UnsupportedOperationException("Telnet连接不支持此操作!");//示例不支持的操作写法 } /** * InnerConnection底层抽象实现 * @return true:alive */ public boolean isAlive() { try { String result = (String) this.execCommand("echo testLink"); if(!(result.indexOf("testLink")>-1)){ return false; } } catch (Exception e) { log.error("判断连接错误",e); return false; } return true; } /** * 端口与telnet服务端的连接 */ public void close() { try { if(telnetSession!=null) telnetSession.disconnect(); } catch (Exception e) { log.error(e); } } public static void main(String[] args) { ProtocolDetail protocolDetail = new ProtocolDetail(); Map params = protocolDetail.getParamsMap(); params.put("IP", "192.168.1.103"); params.put("USER", "itim"); params.put("PASSWORD", "itim"); params.put("TERMINALENV", "VT100"); params.put("PORT", "23"); params.put("PROMPT", "$"); TelnetNConn conn = new TelnetNConn(); try { conn.init(protocolDetail); System.out.println(conn.isAlive()); System.out.println(conn.execCommand("ll")); System.out.println("执行完毕"); }catch (Exception e) { e.printStackTrace(); }finally{ conn.close(); } } }
谢谢。程序里用到的另外3个类文件能给我看看吗?basketball520@gmail.com
问题补充:khan 写道哪三个文件啊?
你外部导入的这三个啊
import com.surekam.collie.collecter.task.conn.AbsActiveConn;
import com.surekam.collie.model.collecter.ProtocolDetail;
import com.surekam.conf.api.ConfigManager;2011年11月21日 18:04
4个答案 按时间排序 按投票排序
-
有啊,
package com.surekam.collie.collecter.task.conn.inst; import com.surekam.collie.collecter.task.conn.AbsActiveConn; import com.surekam.collie.model.collecter.ProtocolDetail; import com.surekam.conf.api.ConfigManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.telnet.TelnetClient; import java.io.InputStream; import java.io.PrintStream; import java.util.Map; import java.util.concurrent.*; public class TelnetNConn extends AbsActiveConn implements Callable{ private final static Log log = LogFactory.getLog(TelnetNConn.class); private TelnetClient telnetSession; private String destAddress; private int destPort = 23; private String destUser; private String destPWD ; private String terminalEnv; private final String TIMEOUT = "telnetTimeOut"; private long timeout = 40000; private String userPrompt = "ogin: "; private String passPrompt = ": "; private String prompt = "$ "; private boolean isLogin = false; private ExecutorService executor; //异步执行传入命令 /** * telnet 连接初始化 */ public void init(ProtocolDetail protocolDetail) throws Exception { /** * 参数,成员初始处理 */ Map<String, String> params = protocolDetail.getParamsMap(); destAddress = params.get("IP").trim(); destUser = params.get("USER"); destPWD = params.get("PASSWORD"); terminalEnv = params.get("TERMINALENV"); //终端模拟,如使用不正确可能导致采集结果返回乱码,数值主要包括:VT220、VT100、LINUX等 destPort = Integer.parseInt(params.get("PORT")); prompt = params.get("PROMPT").trim(); terminalEnv = null==terminalEnv||terminalEnv.trim().length()<1?"VT100":""; timeout = Long.parseLong(ConfigManager.getInstance().getConfiger().getParameter(TIMEOUT)); executor = Executors.newSingleThreadExecutor(); //命令任务处理 /** * 连接初始处理 */ try{ telnetSession = new TelnetClient(terminalEnv); telnetSession.setReaderThread(false); telnetSession.connect(destAddress, destPort); login(destUser,destPWD); }catch (Exception e){ e.printStackTrace(); } } /** * 登陆到telnet服务端 * @param destUser * @param destPWD */ private void login(String destUser, String destPWD) { try{ if(telnetSession.isConnected()){ sendString(""); String welcomeInfo = (String)call(); // log.info("welcome:"+welcomeInfo); sendString(destUser); String fillUserInfo = (String)call(); // log.info("fillUserInfo:"+fillUserInfo); sendString(destPWD); String fillPWDInfo = (String)call(); // log.info("filePWD:"+fillPWDInfo); /** * 根据填充完密码返回信息 * 判断登陆是否成功 */ if(fillPWDInfo.trim().endsWith(prompt.trim())){ isLogin = true; } } }catch (Exception e){ e.printStackTrace(); } } /** * telnet连接后执行系统指令 * @param cmd * @return * @throws Exception */ public Object execCommand(final String cmd) throws Exception { // log.info("isLogin:"+isLogin); if(isLogin){ sendString(cmd); Future future = executor.submit(this); return future.get(timeout,TimeUnit.MILLISECONDS); }else{ throw new Exception("连接问题导致连接异常"); } } /** * 发送指令到telnet服务端 * @param s * @throws Exception */ private void sendString(String s) throws Exception { PrintStream os = new PrintStream(telnetSession.getOutputStream()); os.println(s); os.flush(); } /** * 读取telnet服务端返回数据 * @return * @throws Exception */ public Object call() throws Exception { InputStream inputStream = telnetSession.getInputStream(); StringBuffer stringBuffer = new StringBuffer(); try { byte[] buff = new byte[1024]; int ret_read = 0; boolean loopFlag = true; while (loopFlag && ret_read >= 0){ /** * 读取数据 */ ret_read = inputStream.read(buff); if (ret_read > 0) { String temp = new String(buff, 0, ret_read); stringBuffer.append(temp); } /** * 判断返回 */ if(isLogin){ //login的情况下不处理冒号 if(stringBuffer.toString().trim().endsWith(prompt.trim())){ loopFlag = false; } }else { // 登陆成功只判断命令提示符 if(stringBuffer.toString().trim().endsWith(":")||stringBuffer.toString().trim().endsWith(prompt.trim())){ loopFlag = false; } } } } catch (Exception e) { log.debug("telnet读取命令返回数据错误",e); } return new String(stringBuffer.toString().getBytes(),"utf-8"); } /** * 适配抽象方法 * @return */ public Object getInnerConnection() { throw new UnsupportedOperationException("Telnet连接不支持此操作!");//示例不支持的操作写法 } /** * InnerConnection底层抽象实现 * @return true:alive */ public boolean isAlive() { try { String result = (String) this.execCommand("echo testLink"); if(!(result.indexOf("testLink")>-1)){ return false; } } catch (Exception e) { log.error("判断连接错误",e); return false; } return true; } /** * 端口与telnet服务端的连接 */ public void close() { try { if(telnetSession!=null) telnetSession.disconnect(); } catch (Exception e) { log.error(e); } } public static void main(String[] args) { ProtocolDetail protocolDetail = new ProtocolDetail(); Map params = protocolDetail.getParamsMap(); params.put("IP", "192.168.1.103"); params.put("USER", "itim"); params.put("PASSWORD", "itim"); params.put("TERMINALENV", "VT100"); params.put("PORT", "23"); params.put("PROMPT", "$"); TelnetNConn conn = new TelnetNConn(); try { conn.init(protocolDetail); System.out.println(conn.isAlive()); System.out.println(conn.execCommand("ll")); System.out.println("执行完毕"); }catch (Exception e) { e.printStackTrace(); }finally{ conn.close(); } } }
2011年11月21日 19:58
相关推荐
- **Win32 API**:VC++程序通常会调用Windows操作系统提供的API来实现窗口、消息处理、事件驱动等功能。例如,使用`CreateWindowEx`创建登录窗口,`SetWindowText`设置窗口标题,`ShowWindow`显示或隐藏窗口。 - *...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、...
Dvbbs7.x To knetbbs2.x 转换程序:为win32的exe,暂只支持mdb,需安装.net framework 一定要使用最新下载的knetbbs2数据库(DB/knetbbs2.cs)! 注意:转换后的管理员为admin,如果原先数据库有该...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
版本名称:枫の网络 版 本 号:V8.1 数 据 库:ACCESS 2000 发布日期:2004-03-12 网站地址:http://flash520.net 后台管理员帐号及密码匀为:admin 备注: 通过免费下载、复制 等方式直接获得本站免费程序的使用权 ,...
在对两代Windows系统——Windows 7和Windows 8进行性能对比时,我们可以从多个方面来探讨它们的差异。在此次测试中,Windows 8在多个环节上展现出了优于Windows 7的性能。 首先,从安装占用空间来看,Windows 8 Pro...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
Win10 优化教程解放强迫症,这篇文章旨在帮助用户解决 Win10 升级后出现的高 CPU 使用率和硬盘使用率问题,并提供了一系列的优化技巧和方法,帮助用户提高 Win10 的性能和流畅度。 1. 解决 360 优化 win10 后开不了...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
在我们开发软件过程中,经常会需要开发一个后台管理程序.用于管理我们开发的前台软件. 当你开发的软件越来越多的时候,你的管理后台也会越来越多.这时如果有一个统一的管理后台.来进来管理.有统一台帐号,统一的授权来...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! 增加了数据库安全性。数据库默认的地址:/admin/hao251.asa 如果不是在根目录 ...
通过MFC,开发者可以更高效地构建用户界面,而不需要直接操作底层的Win32 API。在本例中,源代码利用MFC创建了一个用户登录和注册的交互界面,包括输入框、按钮等控件,以及相应的事件处理函数。 关于登录和注册...
kuku265网址导航系统更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! kuku265网址导航系统安装帮肋 1.修改siteconfig/conn.asp的...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
+ 项目简述:门户网站的前台和后台程序设计,包含有后台登陆、计数器、信息发布、公证团队发布、网上申请、在线咨询、友情连接、图片上传、数据库定期备份等功能模块。 + 该项目基于 MVC 模式,采用 Jsp+jquery + ...
kuku265网址导航 v2.0更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理、网址提交、网站留言、网址反馈等栏目。 kuku265网址导航...
7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text()==tr("qt")&&m...
『电子教案管理系统』使用说明 ===========================================================程序名称:『电子教案管理系统』=========================================================== 【设计思路】随着计算机...
多处的安全更新:进行了多处安全更新,加入了防SQL注入程序,后台管理均使用MD5不可逆加密,数据库做了防下载处理,最新版中我们对程序代码进行了全面的检查,修补了暴库漏洞、SQL注入漏洞 <br>QQ:294990966,...