如何使用Python向远程主机发送F2键

4 投票
2 回答
3330 浏览
提问于 2025-04-15 23:56

我需要把 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 终端下得到的结果。

撰写回答