使用JSch执行的命令与SSH终端的行为不同(绕过确认提示消息"是/"否")

时间:2017-02-01 16:48:19

标签: java shell ssh jsch

注意:我登录的是设备,而不是计算机,因此我登录配置模式(而不是非配置模式)。

我在Java中使用JSch库,使用SSH协议登录。我这样登录:

channel = con.openChannel("shell");
channel.connect();

在某些情况下,当我通过shell发送需要su(配置模式)权限(更改配置)的命令时,此代码会绕过提示确认消息 - 这可能会阻止其他用户更改配置。如果我使用SSH客户端/终端手动输入命令,我必须输入yes进行确认。

有没有人知道为什么?
感谢。

[manual shell session]

当我通过JSch登录时,我甚至可以执行配置命令,当我不插入"是"到要执行的命令数组。

1 个答案:

答案 0 :(得分:1)

默认情况下,JSch不会请求PTY(伪终端)。

这可能导致某些命令的行为与交互式SSH终端中的行为不同。

您可以使用ChannelSession.setPty覆盖此内容。

如果上述方法无效,请参阅类似问题: