java ganymed-ssh2,session 执行多条指令,最好可以在前一条的基础上,执行下一条。

已举报 回答
java ganymed-ssh2,session 执行多条指令,最好可以在前一条的基础上,执行下一条。
问在线客服
扫码问在线客服
  • 回答数

    3

  • 浏览数

    3,217

3个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
通过session.requestDumbPTY()和session.startShell()来模拟命令行,在通过io流操作
try {
session = conn.openSession();
session.requestDumbPTY();
session.startShell();
stdout = session.getStdout();
stderr = session.getStderr();
stdin = session.getStdin();
} catch (IOException e) {
e.printStackTrace();
}
io流操作
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(stdin));
bw.write(command + \n\r);
bw.flush();

while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = session.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 2000);
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true) {
String answer = br.readLine();
if (answer != null) {
Log.i(socket, message call: + answer);
} else {
break;
}
}
BufferedReader brErr = new BufferedReader(new InputStreamReader(stderr));
while (true) {
String answer = brErr.readLine();
if (answer != null) {
Log.i(socket, execute: answer error = + answer);
} else {
break;
}
}
}
取消 评论
写个脚本文件
取消 评论
多行命令用分好隔开就行了! 如“cd /home;ls -l”
取消 评论
ZOL问答 > 手机 > 其他分类 > java ganymed-ssh2,session 执行多条指令,最好可以在前一条的基础上,执行下一条。

相关产品

  • NEC AG

    NEC AG

    参考价:¥980    评分:-

    热门排行榜:未上榜

  • 京东搜一搜

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?