javaでLinuxコマンドをリモート実行する方法
Linuxの命令をリモートで実行するには、JavaのProcessBuilderクラスを使えます。簡単なサンプルコードを以下に示します。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RemoteCommandExecutor {
public static void main(String[] args) {
String host = "your_remote_host";
String username = "your_username";
String password = "your_password";
String command = "your_command";
String sshCommand = String.format("sshpass -p %s ssh %s@%s %s", password, username, host, command);
try {
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", sshCommand);
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("Exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
このサンプルコードではパスワードを自動入力するためにsshpassコマンドを使用することに注意してください。これは、ProcessBuilderクラスはインタラクティブログイン時にパスワードを直接入力できないためです。パスワードを自動入力するには、sshpassなどのツールを使用する必要があります。
なお、コマンドを実行するために、SSH がローカルマシンにインストールされている必要があり、Javaプログラムに、リモートのホストに接続する権限が必要です。