我使用的Python 2.7和代码SSH客户端的paramiko库,我用myhost.channel.send(chr(keycode))
的每一个键码发送给服务器。 但它仅适用于1个字节键码。 我想给其他的多字节键码,像箭头键。 我怎样才能做到这一点? 请帮我。
Answer 1:
如Windows或者MacOS的GUI标识键与“键码”,但一个SSH管只是传送字节,而不是键码。
假设您的内部服务器上的SSH运行的程序是交互式的(也就是说,它期待一个人来使用它),你需要找出什么样的字节模式它预计接收。 当您打开通道,确保你打电话.get_pty()
给它一个终端参数(默认情况下, vt100
,是非常安全)。 然后,你需要阅读文档的VT100终端,找出哪些字节序列当按下各个键发送。 我建议你阅读的Xterm控制序列的文件(Xterm的不是严格意义上的VT100模拟器,但它的文档非常齐全),而不是混淆的混淆与原VT100终端的硬件细节)。 需要注意的是该文件中,“CSI”实际上就意味着在Python字符串'\e['
。
例如,在Xterm控制序列文件说,箭头键是“CSI A”为向上,“CSI B”为向下“ CSI C”为右,和“CSI d”为左。 在Python,看起来像:
up = '\e[A'
down = '\e[B'
right = '\e[C'
left = '\e[D'
文章来源: How to send an arrow key use paramiko library in python?