我是新來的這種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