JAVA通过SSH连接Ubuntu虚拟机执行linux指令
废话不说,直接上代码
import com.jcraft.jsch.*;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class RemoteShellExecutor {
private String ipAddress;
private String username;
private String password;
public RemoteShellExecutor(String ipAddress, String username, String password) {
this.ipAddress = ipAddress;
this.username = username;
this.password = password;
}
public String executeCommand(String command) throws Exception {
JSch jsch = new JSch();
Session session = jsch.getSession(username, ipAddress, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
InputStream in = channel.getInputStream();
channel.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String output = "";
String line;
while ((line = reader.readLine()) != null) {
output += line + "\n";
}
reader.close();
channel.disconnect();
session.disconnect();
return output;
}
public static void main(String[] args) throws Exception {
RemoteShellExecutor executor = new RemoteShellExecutor("192.168.1.1", "username", "password");
String output = executor.executeCommand("ls -l");
System.out.println(output);
}
}
注意:
要创建Maven项目,具体可以自己搜索,然后添加依赖关系
<dependencies>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
</dependencies>