gpt4 book ai didi

Python 发送 control + Q 然后 control + A(特殊键)

转载 作者:太空狗 更新时间:2023-10-29 17:18:11 24 4
gpt4 key购买 nike

我需要发送一些特殊的击键,但不确定该怎么做。

我需要发送 Ctrl + Q 然后是 Ctrl + A 到终端(我是使用 Paramiko)。

我试过了

shell = client.invoke_shell()

shell.send(chr(10))
time.sleep(5)
shell.send(chr(13))

shell.send('\x11')
shell.send('\x01')

print 'i tried'

我可以看到两个返回成功进入,但是什么也没有,它没有退出 picocom(还要注意我把它弄错了,它期待 ctrl+a,然后是 ctrl+q)

如果有帮助,这就是设备 http://www.cisco.com/c/en/us/td/docs/routers/access/interfaces/eesm/software/configuration/guide/4451_config.html#pgfId-1069760

正如你在第 2 步看到的那样

Step 2 Exit the session from the switch, press Ctrl-a and Ctrl-q from your keyboard:

Switch# <type ^a^q>
Thanks for using picocom
Router#

更新:

我试过\x01\x16\x11\n 但这会返回

Switch#
Switch#
*** baud: 9600
*** flow: none
*** parity: none
*** databits: 8
*** dtr: down

Switch#

这看起来像是另一个特殊命令?

最佳答案

Ctrl + 键实际上是一种“用户友好”的输入ASCII 控制字符的方式。这是通过从输入 key 的 ASCII 代码中减去 64(在适用的情况下采用大写字母)来完成的。例如,Ctrl + H 的组合相当于输入退格键(H 的代码为 72,72-64=8,退格键特点)。 This Wikipedia page列出与其组合键关联的 ASCII 控制字符,因此 Ctrl+ACtrl+Q 等同于通过 paramiko channel 发送字符串 "\x01\x11":

channel = client.invoke_shell()
channel.send('\x01\x11')

更新

为了检查当我按下 Ctrl+A Ctrl+Q 时实际传输的内容,我设计了一个小测试程序:

# decode.py
import sys

while True:
inp = sys.stdin.read(1)
if len(inp) == 0:
break
print ord(inp[0])

如果我现在通过 ssh localhost python decode.py 调用它并输入 Ctrl+A Ctrl+ V Ctrl+Q(我必须执行 Ctrl+V 因为 < kbd>Ctrl+Q 被我的本地 shell 解释为 XON 而没有传递到另一端),然后 Enter Ctrl+D 关闭连接,我得到 11710 作为序数,或者 '\x01\x11\n',正如预期的那样。

我基本上通过执行 printf '\x01\x11\n' | 得到相同的结果 | ssh localhost python decode.py.但是,如果我通过 printf '\x01\x11\n' | 在远程端分配一个 pty ssh -tt localhost python decode.py \x11 被远程 pty 截获,没有传递给正在运行的脚本(我得到 110 作为输出)。在这种情况下,它有助于在 Ctrl+ 之前发送 Ctrl+V (\x16) Q 指示 pty 传递下一个字符 Verbatim。正如预期的那样 printf '\x01\x16\x11\n' | ssh -tt localhost python decode.py 输出 11710

关于Python 发送 control + Q 然后 control + A(特殊键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com