如何使用Python向远程主机发送F2键
我需要把 F2 键发送到 telnet 主机。请问我该怎么用 Python 来发送这个键呢?我用 getch()
发现 F2 键对应的字符是 <
,但是发送 >
时却不行。我觉得应该有办法发送这些特殊功能键,但我找不到。要是有人知道,请帮帮我。提前谢谢了!
2 个回答
3
首先,正如Ignacio所提到的,你需要确定F2键发送的确切字符序列。在我的电脑上,这个序列是^[OQ
,其中^[
表示一个转义字符,它的ASCII码是27。这和他得到的结果是一样的。你必须通过telnet发送完全相同的字节序列。假设正确的序列就是我上面展示的,那就简单了:
import telnetlib
tn = telnetlib.Telnet(HOST, PORT)
tn.write(idpass)
tn.write("\x1b0Q")
tn.close()
如果你在想,\x1b
代表的是一个ASCII码为27的字符,因为27的十六进制表示是1b
。这个在我的电脑上是有效的(通过一个简单的回显服务器进行测试),所以如果在你那儿不行,那就说明远程主机期待的是其他东西,而不是F2键的按下。
4
扩展键(也就是那些不是字母、数字或符号的键)是由一系列单个字符组成的,这个字符的顺序取决于你告诉telnet服务器你使用的终端类型。为了让它正常工作,你需要按顺序发送这些字符。在这里,我使用了 od -c <<< '
CtrlVF2'
,我看到了一串字符 \x1b0Q
,这是在 xterm
终端下得到的结果。