我试图找出如何使用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 answer和xterm control sequences)我试图将它发送到远程服务器:
channel.send('\e[12~')
之后脚本挂起。我究竟做错了什么?谢谢。
答案 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字符串。
我不知道这究竟是什么导致了你的问题,但它可能是其中的一部分。