【问题标题】:how to send F2 key to remote host using python如何使用python将F2键发送到远程主机
【发布时间】:2011-03-03 09:34:57
【问题描述】:

我必须将 F2 密钥发送到 telnet 主机。如何使用 python 发送它...使用 getch() 我发现字符 < 用于 F2 键,但是在发送 > 时,它不起作用。我认为有一种方法可以发送特殊功能键,但我找不到它。如果有人知道请帮助我。提前致谢

【问题讨论】:

  • 你应该从发布你现在拥有的源代码开始。
  • import getpass import sys import telnetlib tn = telnetlib.Telnet(HOST) tn.open(HOST,PORT) tn.write(idpass) #在这里连接 #现在我只想发送 f2 密钥跨度>

标签: python telnet


【解决方案1】:

扩展键(非字母数字或符号)由一系列单个字符组成,其顺序取决于您告知正在使用的 telnet 服务器的终端。您需要发送序列中的所有字符才能使其正常工作。在这里,使用 od -c <<< 'CtrlVF2' 我能够看到带有 xterm 终端的 \x1b0Q 序列.

【讨论】:

  • 非常感谢 lgnacio Vazquez-Abrams 的快速回复f2
  • 然后找出远程端期望的终端,并使用那个终端的序列。
【解决方案2】:

首先,正如Ignacio 所指出的,您必须确定 F2 发送的字符的确切顺序。在我的机器上,这恰好是^[OQ,其中^[ 表示ASCII 码为27 的转义字符。这与他得到的相同。您必须通过 telnet 发送 exact 相同的字节序列。假设正确的顺序是我上面显示的顺序,归结为:

import telnetlib

tn = telnetlib.Telnet(HOST, PORT)
tn.write(idpass)
tn.write("\x1b0Q")
tn.close()

如果您想知道,\x1b 代表 ASCII 代码为 27 的字符,因为十六进制的 27 是 1b。 这适用于我的机器(由接收端的简单回显服务器测试),所以如果它对您不起作用,则意味着远程端需要其他东西来代替 F2 按键。

【讨论】:

  • 感谢您的信息 Tamas 它在我的最后使用组合键“\x1b2m”
猜你喜欢
  • 2021-12-20
  • 2011-10-22
  • 2014-02-14
  • 2019-05-31
  • 2017-01-03
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多