1. 导入依赖
<!-- test-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!-- ssh2-->
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
2. 代码实现
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@SpringBootTest
public class ssh2 {
public Connection login() {
String ip = "192.168.0.1";
String usr = "root";
String psword = "root";
//创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法
//new Connection(ip, port)创建对象
Connection conn = new Connection(ip);
try {
//连接远程服务器
conn.connect();
//使用用户名和密码登录
boolean res = conn.authenticateWithPassword(usr, psword);
System.out.println(res);
return conn;
} catch (IOException e) {
System.err.printf("用户密码登录服务器失败!", usr, psword, ip);
e.printStackTrace();
}
return null;
}
/**
*
* @param conn Connection对象
* @param cmds 要在linux上执行的指令
*/
public int exec(Connection conn, String cmds) {
InputStream stdOut = null;
InputStream stdErr = null;
int ret = -1;
try {
// 在connection中打开一个新的会话
Session session = conn.openSession();
// 在远程服务器上执行linux指令
session.execCommand(cmds, "UTF-8");
InputStream is = new StreamGobbler(session.getStdout());
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
System.out.println(brs.readLine());
InputStream is1 = new StreamGobbler(session.getStderr());
BufferedReader brs1 = new BufferedReader(new InputStreamReader(is1));
System.out.println(brs1.readLine());
session.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
@Test
public void test() {
String cmd = "service kudu-tserver status";
// String cmd1 = "service kudu-master stop";
// String cmd2 = "/presto/presto-server-0.253/bin/launcher stop";
Connection conn = login();
exec(conn, cmd);
// Connection conn1 = login();
// exec(conn1, cmd1);
// Connection conn2 = login();
// exec(conn2, cmd2);
}
}