Python 如何以编程方式输入telnet的转义字符?
我正在使用paramiko将ssh连接到远程机器,到目前为止,这一切似乎都运行良好Python 如何以编程方式输入telnet的转义字符?,python,ssh,escaping,telnet,paramiko,Python,Ssh,Escaping,Telnet,Paramiko,我正在使用paramiko将ssh连接到远程机器,到目前为止,这一切似乎都运行良好 client.connect(主机名,端口=ssh\u端口,用户名=username,key\u文件名=key\u fname,密码=password) 现在,从远程机器开始,我需要更深入地使用 stdin、stdout、stderr=client.exec\u命令('telnet localhost%d'%port) 似乎给了我正确的手柄来开始使用stdin.write进行交谈 我的问题是,当我完成时,我不知道
client.connect(主机名,端口=ssh\u端口,用户名=username,key\u文件名=key\u fname,密码=password)
现在,从远程机器开始,我需要更深入地使用
stdin、stdout、stderr=client.exec\u命令('telnet localhost%d'%port)
似乎给了我正确的手柄来开始使用stdin.write进行交谈
我的问题是,当我完成时,我不知道如何正确地退出telnet。如果我手动操作,我可以进入telnet并看到:转义字符是“^]”。
我可以使用键盘上的Ctrl+]
,然后会弹出一个小菜单说
Console escape. Commands are:
l go to line mode
c go to character mode
z suspend telnet
e exit telnet
然后我可以按“e”键退出(无需按“回车”键即可立即退出)
但是当我在脚本中尝试这样做时,通过stdin.write('^]e')
,stdin.write('\^]e')
,stdin.write('\c]e')
,stdin.write('\M-\c-]e')
,等等。。我一直在stdout.read()
中看到我的脚本按字面意思输入了这些字符。在]
和e
之间放置一点时间。睡眠(0.1)
似乎没有帮助
如何以编程方式输入转义序列?我终于解决了这个问题
简短的回答是:'\x1d'
这是弹出小菜单的转义序列。我通过curses
模块找到了这个:
from curses.ascii import ctrl
print ctrl(']')