在JAVA中连接Linux虚拟机并通过Runtime.getRuntime().exec运行该虚拟机中的脚本
时间: 2024-03-07 17:50:50 浏览: 69
要连接到Linux虚拟机并在其上运行脚本,可以使用Java中的SSH库。下面是一个简单的例子:
```java
import com.jcraft.jsch.*;
public class SSHExample {
public static void main(String[] args) {
try {
JSch jsch = new JSch();
String host = "your-ssh-host";
String user = "your-ssh-user";
String password = "your-ssh-password";
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
String command = "/usr/local/bin/myscript.sh";
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
// 读取脚本的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
channel.disconnect();
session.disconnect();
} catch (JSchException | IOException e) {
e.printStackTrace();
}
}
}
```
在上面的例子中,我们使用JSch库连接到SSH主机并执行脚本。需要替换`your-ssh-host`,`your-ssh-user`和`your-ssh-password`为实际的SSH主机,用户名和密码。然后,我们指定要在虚拟机中运行的脚本,并使用`ChannelExec`执行该脚本。最后,我们读取脚本的输出并打印到控制台上。
需要注意的是,JSch库需要在项目中包含相应的依赖项。可以在Maven或Gradle中添加JSch库的依赖项。
阅读全文