【问题标题】:Python Paramiko send CTRL+C to an ssh shellPython Paramiko 将 CTRL+C 发送到 ssh shell
【发布时间】:2016-01-22 06:34:24
【问题描述】:

我正在使用 Paramiko 调用 shell,以便通过 ssh 连接使用 CLI。这个 CLI 的问题是,如果我不专门使用 CTRL+C 关闭它,则程序将无法在不重新启动系统的情况下再次打开。

我尝试了以下命令:

SSH.send("^C\n")
SSH.send("\x003")

还有其他方法可以调用这些吗?同样,我已经使用 paramiko.SSHClient() 建立了一个 SSH 连接,然后使用 ssh.invoke_shell() 调用了一个 shell,现在我需要向该 shell 发送 CTRL+C 以关闭 shell(不是 ssh 连接)

【问题讨论】:

    标签: python shell ssh paramiko


    【解决方案1】:

    基于:https://stackoverflow.com/a/11190794/565212

    你可以——
    或者:调用 client.exec_command() 时传递 get_pty=True。然后 client.close() 终止远程尾部。
    或者:在调用 channel.exec_command() 之前执行 channel.get_pty()。然后 channel.close() 终止远程尾部。

    【讨论】:

      【解决方案2】:

      您的第二个示例走在正确的轨道上,但它的格式并不完全正确。你实际上在那里得到了一个 2 个字符的字符串。

      SSH.send("\x03") 应该可以解决问题。

      不过,我可能会改用这个。

      SSH.send(chr(3))

      【讨论】:

      • 我的朋友做到了,感谢您在这里解释我的错误
      • 如何发送 CTRL+A 例如,它只是 "\x01" 吗?如果是这样,这是什么编码方案?为了完整性,可能值得添加答案吗? (尽管非常有帮助,但仍然赞成)
      猜你喜欢
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 2018-03-29
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2013-12-03
      相关资源
      最近更新 更多