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

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

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

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

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

有谁知道为什么?
谢谢。

[ 手动shell会话 ]

当我通过JSch登录时,我甚至可以执行配置命令,当我没有向要执行的命令数组插入“是”时。

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

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

您可以使用ChannelSession.setPty覆盖它。


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

  • 当使用JSch通过Java执行时,某些Unix命令失败并显示“… not found”
  • 使用JSch通过Java执行某些Unix命令失败并显示“… not found”,即使启用了setPty也是如此