2024-05-19 16:26:08 发布
网友
我必须发送F2密钥到telnet主机。如何使用python发送它…使用getch()我发现字符{}用于F2键,但在发送>时,它不起作用。我想有一种方法可以发送特殊功能键,但我找不到。如果有人知道,请帮帮我。提前谢谢
getch()
>
首先,正如Ignacio所指出的,您必须确定F2发送的字符的确切序列。在我的机器上,这恰好是^[OQ,其中^[表示ASCII代码为27的转义字符。这和他得到的一模一样。您必须通过telnet发送相同的字节序列。假设正确的序列是我上面所示的序列,可以归结为:
^[OQ
^[
import telnetlib tn = telnetlib.Telnet(HOST, PORT) tn.write(idpass) tn.write("\x1b0Q") tn.close()
如果您想知道,\x1b表示ASCII代码为27的字符,因为十六进制中的27是1b。 这在我的机器上工作(由接收端的一个简单的echo服务器测试),所以如果它不适合您,这意味着远程端需要其他东西来代替F2按键。在
\x1b
1b
扩展密钥(非字母数字或符号)由单个字符序列组成,序列取决于您告诉telnet服务器您正在使用的终端。您需要发送序列中的所有字符才能使其正常工作。在这里,使用od -c <<< 'CtrlVF2'我可以看到\x1b0Q的序列与xterm。在
od -c <<< '
'
\x1b0Q
xterm
首先,正如Ignacio所指出的,您必须确定F2发送的字符的确切序列。在我的机器上,这恰好是
^[OQ
,其中^[
表示ASCII代码为27的转义字符。这和他得到的一模一样。您必须通过telnet发送相同的字节序列。假设正确的序列是我上面所示的序列,可以归结为:如果您想知道,
\x1b
表示ASCII代码为27的字符,因为十六进制中的27是1b
。 这在我的机器上工作(由接收端的一个简单的echo服务器测试),所以如果它不适合您,这意味着远程端需要其他东西来代替F2按键。在扩展密钥(非字母数字或符号)由单个字符序列组成,序列取决于您告诉telnet服务器您正在使用的终端。您需要发送序列中的所有字符才能使其正常工作。在这里,使用
od -c <<< '
CtrlVF2'
我可以看到\x1b0Q
的序列与xterm
。在相关问题 更多 >
编程相关推荐