我已成功通过SSH连接到节点,发送输入并检索输出。输入一行后,该行将打印到控制台,然后是空白行,然后输出打印两次。我不希望输入在输入后打印到控制台,也不是空行,也不是第二次打印输出。以下是我的代码
public void runSession() {
try {
Channel channel = session.openChannel("shell");
channel.setInputStream(System.in, true);
channel.setOutputStream(System.out, true);
channel.connect(defaultChannelTimeout);
while (channel.getExitStatus() == -1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println(e);
}
}
channel.disconnect();
} catch(JSchException jschEx) {
System.out.println("JSch exception during I/O");
System.out.println(jschEx.getMessage());
}
}
这是控制台在运行时的样子
用户:域@节点:/ A / B / c取代; cd ..
cd ..
用户:域@节点:/ A / B个 用户:域@节点:/ A / B个
如您所见,存在一些问题:
有谁知道如何删除控制台中显示的这三项?期望的输出是
用户:域@节点:/ A / B / c取代; CD ..
用户:域@节点:/ A / B个
答案 0 :(得分:1)
这些都是“shell”频道的后果。
您使用人类用户喜欢的所有花哨内容运行交互式会话。
“shell”频道不适用于自动化。
您可以在channel.setPty(false)
之前致电channel.connect()
来删除部分内容。
虽然你最好使用“exec”频道。
这可能有效:
( echo username & echo password & echo hostname ) | command
相关问题: