永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-11-15 02:28
  • 提问者网友:临风不自傲
  • 2021-11-14 22:35
java ganymed-ssh2,session 执行多条命令,最好可以在前一条的基础上,执行下一条。
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-11-14 23:35
通过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;
}
}
}
全部回答
  • 1楼网友:一秋
  • 2021-11-15 00:55
写个脚本文件
  • 2楼网友:佘樂
  • 2021-11-15 00:42
多行命令用分好隔开就行了! 如“cd /home;ls -l”
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯