我是新来的这种Java应用程序,并寻找关于如何使用SSH连接到远程服务器,执行命令以及使用Java作为编程语言返回输出的示例代码。如何在使用Java的远程系统上运行SSH命令?
21
A
回答
13
看一看的Runtime.exec()的Javadoc
Process p = Runtime.getRuntime().exec("ssh myhost");
PrintStream out = new PrintStream(p.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
out.println("ls -l /home/me");
while (in.ready()) {
String s = in.readLine();
System.out.println(s);
}
out.println("exit");
p.waitFor();
1
我用木卫三的这几个赞成票前... http://www.cleondris.ch/opensource/ssh2/
11
3
你可以看看这个基于Java的框架来执行远程命令,包括:通过SSH:https://github.com/jkovacic/remote-exec 它依赖于两个开源的SSH库,无论是JSch(即使支持ECDSA身份验证的实现)或Ganymed(这两个库中的一个都足够了)。乍一看,它可能看起来有点复杂,你必须准备大量的SSH相关类(提供服务器和用户详细信息,指定加密细节,提供OpenSSH兼容私钥等,但SSH本身非常复杂太)。另一方面,模块化设计允许简单包含更多的SSH库,轻松实现其他命令的输出处理甚至交互式类等。
2
下面是在java中SSh最简单的方法。下载任何在下面的链接,并提取该文件,然后从提取的文件添加jar文件,并添加到项目 http://www.ganymed.ethz.ch/ssh2/ 的构建路径,并使用下面的方法
public void SSHClient(String serverIp,String command, String usernameString,String password) throws IOException{
System.out.println("inside the ssh function");
try
{
Connection conn = new Connection(serverIp);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(usernameString, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
ch.ethz.ssh2.Session sess = conn.openSession();
sess.execCommand(command);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("the output of the command is");
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
}
}
相关问题
- 1. 如何通过java程序在远程系统上运行SSH命令(后续)
- 2. 使用Twisted在远程系统上运行命令
- 3. 使用ssh运行远程awk命令
- 4. 使用ssh在远程计算机上运行命令
- 5. 如何使用sudo bash运行Zend Studio远程系统SSH
- 6. 如何在远程系统上执行BASH脚本的命令?
- 7. 如何远程SSH时自动运行OSX上的命令?
- 8. 在C#中如何使用TcpClient在远程SSH上运行unix命令
- 9. 通过ssh远程运行命令
- 10. 使用Java在远程计算机上运行命令行
- 11. 如何使用Java运行操作系统命令
- 12. 如何使用PHP exec()在后台执行远程SSH命令?
- 13. 通过SSH运行远程命令,但在后台运行
- 14. 如何使用perl在远程计算机上运行命令?
- 15. 如何使用telnetlib3在python asyncio上运行远程命令
- 16. 如何使用Perl在远程计算机上运行命令?
- 17. 运行远程命令槽隧道SSH和java
- 18. 使用Net :: SSH远程SSH命令执行在特定命令中挂起
- 19. 使用Maven3通过ssh运行远程命令
- 20. 使用系统命令运行RAILS_ENV = production
- 21. 使用远程登录/命令的SSH
- 22. 在bash上在ssh上运行命令
- 23. 如何使用java运行ssh-keygen.exe中的命令
- 24. 在远程机器上运行命令
- 25. 如何在远程服务器上运行命令行程序
- 26. 如何在HDFS中的文件上运行系统命令?
- 27. 如何在命令提示符下从远程系统运行tsql
- 28. 如何使用WMI作为非管理员用户在远程Windows系统上运行命令?
- 29. SSH远程命令执行和的ulimit
- 30. 如何使用Cygwin在perl脚本中运行系统命令
我张贴一些代码,可能帮助:http://stackoverflow.com/questions/2405885/any-good-jsch-examples – 2013-10-26 21:11:57