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");

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值