在Java中,可以使用Runtime
類或ProcessBuilder
類來遠程調用shell腳本。
Runtime
類:String command = "ssh user@remote_host 'sh /path/to/script.sh'";
Process process = Runtime.getRuntime().exec(command);
// 讀取命令輸出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令執行完畢
int exitCode = process.waitFor();
System.out.println("Command exit code: " + exitCode);
請注意,這里使用了ssh
命令來遠程執行shell腳本,需要確保本地機器已經配置好了SSH連接,并且可以免密登錄到遠程機器。
ProcessBuilder
類:String command = "ssh";
String[] arguments = {"user@remote_host", "sh", "/path/to/script.sh"};
ProcessBuilder processBuilder = new ProcessBuilder(command, arguments);
Process process = processBuilder.start();
// 讀取命令輸出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令執行完畢
int exitCode = process.waitFor();
System.out.println("Command exit code: " + exitCode);
使用ProcessBuilder
可以更靈活地構造命令和參數,并且可以設置其他環境變量和工作目錄等。
無論使用哪種方法,都需要確保遠程機器已經安裝了SSH服務,并且可以接受和執行傳遞的shell腳本。同時,要注意遠程執行shell腳本可能涉及到安全風險,需要謹慎處理。