-
怎样用后台程序登陆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
相关推荐
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 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 备注: 通过免费下载、复制 等方式直接获得本站免费程序的使用权 ,...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
在我们开发软件过程中,经常会需要开发一个后台管理程序.用于管理我们开发的前台软件. 当你开发的软件越来越多的时候,你的管理后台也会越来越多.这时如果有一个统一的管理后台.来进来管理.有统一台帐号,统一的授权来...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! 增加了数据库安全性。数据库默认的地址:/admin/hao251.asa 如果不是在根目录 ...
kuku265网址导航系统更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! kuku265网址导航系统安装帮肋 1.修改siteconfig/conn.asp的...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 6、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
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,...
用phpmyadmin导入sql/xna.sql,修改config.php中的数据库地址,皮肤地址和后台登陆密码,设cache目录为777,Win下面为网站用户可读写,后台为/admin,因时间关系,只写了一个简单的用户名和密码验证,大家可免费使用本程序,...
前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立制作模板,非常简单实用的标签,子类可以单独设置模板,制作出属于自己的个性网址导航。 7、后台集成各大搜索引擎联盟账号! 百度、淘宝、迅雷、搜狗...
1、本程序只能在IIS5.1 (winxp win2003 win7) 以上版本运行。(win2000、NETBOX或者简易IIS服务器下不能运行)!此错误的报错信息为 :未结束的字符串 2、NTFS硬盘写权限未打开,此错误的报错信息为 Microsoft ...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
1.公司与企事业单位(监管员工和职员的电脑使用行为,达到合理利用公司网络、...10.支持2003、2008、XP、WIN7、win8操作系统。以上功能限制项可自定义时间段来生效规则。 11客户端可后台运行 ,无进程、无客户端图标。