例子,用JSch 调用 linux
/**
* 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回)
*
* @param host
* 主机名
* @param user
* 用户名
* @param psw
* 密码
* @param port
* 端口
* @param command
* 命令
* @return
*/
public static String exec(SocketSSHConfig sshConfig, JTextArea show) {
String result = "";
Session session = null;
ChannelExec openChannel = null;
try {
JSch jsch = new JSch();
session = jsch.getSession(sshConfig.getUserName(), sshConfig.getHost(), sshConfig.getPort());
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(sshConfig.getPassWord());
session.connect();
openChannel = (ChannelExec) session.openChannel("exec");
openChannel.setCommand(sshConfig.getCommand());
openChannel.connect();
ShowHelper.print(openChannel.getInputStream(), openChannel.getErrStream(), show);
} catch (JSchException e) {
result += e.getMessage();
System.out.println("JSchException 报错!");
} catch (IOException e) {
result += e.getMessage();
System.out.println("IO报错!");
} finally {
if (openChannel != null && !openChannel.isClosed()) {
openChannel.disconnect();
}
if (session != null && session.isConnected()) {
session.disconnect();
}
}
return result;
}
public static boolean print(InputStream in, InputStream err, JTextArea printArea) {
boolean result = true;
// 获取标准输出
final BufferedReader readStdout = new BufferedReader(new InputStreamReader(in));
// 获取错误输出
final BufferedReader readStderr = new BufferedReader(new InputStreamReader(err));
// 创建线程执行
String tmp1 = "";
String tmp2 = "";
// 逐行读取
try {
while ((tmp1 = readStdout.readLine()) != null || (tmp2 = readStderr.readLine()) != null) {
if (tmp1 != null && !tmp1.isEmpty()) {
printChangeRow(tmp1, printArea);
}
if (tmp2 != null && !tmp2.isEmpty()) {
printChangeRow(tmp2, printArea);
result = false;
}
}
} catch (IOException e) {
result = false;
}
return result;
}
public static void print(String str, JTextArea printArea) {
if (printArea == null) {
System.out.print(str);
return;
}
printArea.append(str);
}
public static void printChangeRow(String str, JTextArea printArea) {
if (printArea == null) {
System.out.println(str);
return;
}
printArea.append(str);
printArea.append("\r\n");
}