Java远程执行Shell命令
Jar包:ganymed-ssh2-build210.jar
下载地址:Ganymed SSH-2 for Java
package cn.liusd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class JavaToShell {
public static void main(String[] args) {
String LinuxIPAddr = "192.168.0.10";
String LinuxUsername = "root";
String LinuxPassword = "root";
String cmd = "cat /java/test/connection/test";
// 创建连接
Connection conn = new Connection(LinuxIPAddr);
try {
// 打开连接
conn.connect();
// 认证
boolean authflag = conn.authenticateWithPassword(LinuxUsername, LinuxPassword);
if (authflag) {
// 创建会话
Session sess = conn.openSession();
// 执行命令
sess.execCommand(cmd);
// 获取返回值
InputStream isIn = new StreamGobbler(sess.getStdout());
InputStream isErr = new StreamGobbler(sess.getStderr());
Thread.sleep(1000);
String sIn = getInputStream(isIn);
String sErr = getInputStream(isErr);
// 关闭会话
sess.close();
// 输出返回值
System.out.println(sIn);
System.out.println(sErr);
} else {
System.out.println("登录失败!!!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭连接
if (conn != null) {
conn.close();
}
}
}
// 获取流中内容
public static String getInputStream(InputStream is) {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
try {
if (is.available() != 0) {
while (true) {
String line = br.readLine();
if (line != null) {
sb.append(line);
} else {
break;
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}
}