引入依赖
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
SSH2Util 工具类封装
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class SSH2Util {
private static String DEFAULT_CHARSET = "UTF-8";
public static Connection openConnection(String host,String username,String password) {
try {
Connection connection = new Connection(host);
connection.connect();
boolean login = connection.authenticateWithPassword(username,password);
if (login){
logger.info(host + " 连接成功");
return connection;
}else {
throw new RuntimeException(host + " 用户名密码不正确");
}
} catch (Exception e) {
throw new RuntimeException(host +" "+ e);
}
}
public static ExecCmdResult execCommand(Connection connection,String command){
ExecCmdResult execCmdResult = new ExecCmdResult();
Session session = null;
try{
session = connection.openSession();
session.execCommand(command);
String result = parseResult(session.getStdout());
if (result == null||result.length()==0){
result = parseResult(session.getStderr());
}else {
execCmdResult.setSuccess(true);
}
execCmdResult.setResult(result);
logger.info(command + " ==>> " +execCmdResult.getResult());
return execCmdResult;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
public static String parseResult(InputStream inputStream) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,DEFAULT_CHARSET));
StringBuffer resultSB = new StringBuffer();
String line;
while((line = br.readLine()) != null){
resultSB.append(line+"\n");
}
String result = resultSB.toString().replaceAll("[\\t\\n\\r]", "");
return result;
}
}
ExecCmdResult 定义返回结果类
public class ExecCmdResult {
private boolean flag ;
private String result;
public void setFlag(boolean success){
this.flag = success;
}
public boolean getFlag() {
return flag;
}
public String getResult(){
return result;
}
public void setResult(String result){
this.result = result;
}
}
SSH2Demo 测试
import ch.ethz.ssh2.Connection;
public class SSH2Demo {
public static void main(String[] args) {
try {
String host = "168.192.22.7";
String username = "root";
String password = "123456";
Connection connection = SSH2Util.openConnection(host,username,password);
String cpuInfo = "cat /proc/cpuinfo | grep \"cpu cores\" | uniq";
ExecCmdResult cup = SSH2Util.execCommand(connection,cpuInfo);
connection.close();
}
catch (Exception a){
a.printStackTrace();
}
}
}