【问题标题】:Python: sending key press events over SSHPython:通过 SSH 发送按键事件
【发布时间】:2016-09-02 12:37:06
【问题描述】:

我正在尝试找出如何使用 Python 2.7 Paramiko 模块在远程服务器(没有 X.org)上模拟按键事件。我需要依次发送 F2Enter

根据this discussion我已经实现了这段代码:

import paramiko
client = paramiko.SSHClient()
client.connect(...)
channel = client.get_transport().open_session()
channel.get_pty("vt100")
channel.settimeout(100)

假设 F2 等于'\e[12~' Python 字符串(这来自mentioned answerxterm control sequences)我正在尝试将其发送到远程服务器:

channel.send('\e[12~')

之后脚本挂起。我究竟做错了什么?谢谢。

【问题讨论】:

标签: python ssh keypress paramiko


【解决方案1】:

首先推荐xterm控制序列文档的PDF version;它最初是为纸张设计的,自动转换为 HTML 并不完美。

终端仿真器的历史悠久而复杂,但有一点是 VT100 只有四个功能键(PF1 到 PF4),而当它的继任者 VT220 又增加了 16 个功能键时,原来的编码方案就用完了房间,所以他们换了一个……但为了兼容性,他们使用了 F1 到 F4 的旧编码。因此,虽然 F5 是 CSI 15 ~,但 F2 不是 CSI 12 ~。相反,特别是如果您告诉 Paramiko 您正在模拟 VT100,您应该使用 F2 的 VT100 编码,即 SSE Q'\eOQ 作为 Python 字符串。

我不知道这是否正是导致您的问题的原因,但它可能是其中的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多