我正在使用python 2.7和带有[[paramiko库的ssh客户端代码,我使用myhost.channel.send(chr(keycode))
将每个键码发送到服务器。但是它仅适用于1字节的键码。我想发送其他多字节键码,例如箭头键。我该如何实现?请帮助我。
假设在服务器上的ssh中运行的程序是交互式的(也就是说,期望有人在使用它),您需要找出它期望接收的字节模式。打开通道时,请确保要调用.get_pty()
并为其指定一个终端参数(默认为vt100
是非常安全的)。然后,您需要阅读VT100终端的文档,以了解按下各种键时它发送的字节序列。我建议阅读Xterm Control Sequences文档(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'
class Keyboard:
up = '\x1b[A'
down = '\x1b[B'
right = '\x1b[C'
left = '\x1b[D'
(我从sys.stdin
中读取了它们)
channel.sendall(chr(0x1b)+[B")
0x1B是VT100终端的ASCII转义字符。