java调用其他程序,打印输出数据

例子,用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");

}

 

猜你喜欢

转载自jjrenwu001.iteye.com/blog/2363373