我目前正在制作一个 Java 应用程序,它将执行远程 Windows 机器的命令(从命令提示符)。
为了开发这个,我尝试了以下操作:
使用 Jsch 库,应用程序在连接到Unix 机器时运行良好,我能够使用“prstat -a”命令获取进程列表,但是当我尝试使用Windows 机器时,它给了我ConnectException(超时)
private final static String HOSTNAME = "SOMECOMPUTERNAME.XXX.XXX.XXX.COM";// private final static String USERNAME = "SOMEUSERNAME"; private final static String PASSWORD = "SOMEPASSWORD"; private final static int PORT = 22; public static void main(String[] args) { JSch jscc = new JSch(); try { Session session = jscc.getSession(USERNAME, HOSTNAME, PORT); session.setPassword(PASSWORD); Properties localProperties = new Properties(); localProperties.put("StrictHostKeyChecking", "no"); session.setConfig(localProperties); session.connect(60000); System.out.println("Session connected"); } catch (JSchException e) { e.printStackTrace(); } }
目标机器信息:
- Windows x64 工作站
- 已安装最新版本的 Java
- 不使用任何加密
请指导这一点,可以使用 Jsch 库完成,如果不是,您可以推荐哪种方法。
您可以假设以下事情:
- 我不希望目标机器中有任何代码。所以一个驻留在我的工作站中的 Java 应用程序只执行一些简单的窗口命令,如目标窗口机器中的 dir 或 start applicationName
- 我有用户名和相应的密码
- 我没有 IP 地址,只有一个完整的计算机名称,格式如上面的代码所示(HOSTNAME)
欢迎任何建议。
问候,
icr