java を使ってリモートでシェルスクリプトを呼び出す方法

Javaでは、RuntimeクラスかProcessBuilderクラスからシェルスクリプトを呼び出すことができます。

  1. ランタイム
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 コマンドを使用してリモートにシェルスクリプトを実行するこの部分では、ローカルマシン上でSSH 接続が設定済みで、リモートマシンにパスワードなしでログインできる必要があることに注意してください。

  1. プロセスビルダー
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サーバがインストール済みで、送付するシェルスクリプトを受信して実行可能な状態であることを確認する必要があります。また、遠隔でのシェルスクリプト実行にはセキュリティリスクが伴う場合があるので注意が必要です。

bannerAds