Python:通过SSH发送按键事件

时间:2014-01-10 10:38:00

标签: python ssh keypress paramiko

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

根据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~')

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

1 个答案:

答案 0 :(得分:4)

首先,我推荐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字符串。

我不知道这究竟是什么导致了你的问题,但它可能是其中的一部分。