使用ganymed-ssh2去调用执行远程linux的命令,在maven上查找,发现使用最多的包是ganymed-ssh2-build210.jar、所以就下载了它
private static final String hostname = "115.182.62.225";//linux ip地址
private static final String username = "root";//linux用户名
private static final String password = "j\\^PR$&ZslxCqhif";//linux密码
private static Connection conn;
private static Session ssh = null;
/**
* 判断是否可以连接主机、账户密码是否正确(默认配置的服务器)
* @return
*/
public static boolean hasConnection(){
return hasConnection(hostname,username,password,false);
}
/**
* 执行命令(默认配置的服务器)
* @param cmd
* @return
*/
public static String excuteCMD(String cmd){
return excuteCMD(hostname,username,password,cmd);
}
/**
* 判断是否可以连接主机、账户密码是否正确
* @param hostname
* @param username
* @param password
* @param flag 是否只是查询是否可连接服务器
* @return
*/
public static boolean hasConnection(String hostname,String username,String password,boolean flag){
boolean isconn = false;
conn = new Connection(hostname);
try {
//连接到主机
conn.connect();
//使用用户名和密码校验
isconn = conn.authenticateWithPassword(username, password);
} catch (IOException e) {
e.printStackTrace();
}
if(flag){
closeConnection();
}
return isconn;
}
/**
* 执行命令
* @param hostname
* @param username
* @param password
* @param cmd
* @return
*/
public static String excuteCMD(String hostname,String username,String password,String cmd){
StringBuilder result = new StringBuilder();
boolean isconn = hasConnection(hostname,username,password,false);
if(!isconn){//连接失败
result.append("连接服务器失败");
}else{
try {
ssh = conn.openSession();
//使用多个命令用分号隔开
ssh.execCommand(cmd);
//只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
//将屏幕上的文字全部打印出来
InputStream is = new StreamGobbler(ssh.getStdout());
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
while(true){
String line = brs.readLine();
if(line==null){
break;
}
result.append(line+"\n");
}
} catch (IOException e) {
result.append("连接服务器失败");
e.printStackTrace();
}
}
return result.toString();
}
/**
* 关闭连接的对象
*/
private static void closeConnection(){
//连接的Session和Connection对象都需要关闭
ssh.close();
conn.close();
}
public static void main(String[] args) {
System.out.println(excuteCMD("cd /home/;ls"));
}