wim*_*wim 4 python ssh escaping telnet paramiko
我正在使用paramiko进入远程机器,到目前为止,这似乎工作正常
client.connect(hostname, port=ssh_port, username=username, key_filename=key_fname, password=password)
现在从远程机器我需要更深入,并使用
stdin, stdout, stderr = client.exec_command('telnet localhost %d'%port)
似乎给了我正确的句柄来开始谈论使用 stdin.write
我的问题是,当我完成后,我不知道如何正确退出telnet.如果我手动操作,我可以进入telnet,我看到: Escape character is '^]'. 我可以Ctrl+]在键盘上使用,并弹出一个小菜单说
Console escape. Commands are:
l go to line mode
c go to character mode
z suspend telnet
e exit telnet
Run Code Online (Sandbox Code Playgroud)
然后我可以通过按'e'退出(它立即退出而不需要'enter'键)
但是,当我尝试这样做在我的剧本,由stdin.write('^]e'),stdin.write('\^]e'),stdin.write('\c]e'),stdin.write('\M-\C-]e'),等所有的时间我只看到stdout.read()我的剧本已在无形中进入这些字符.把它放在time.sleep(0.1)中间]并且e似乎没有帮助.
如何以编程方式输入该转义序列?
最后我已经解决了.
简短的回答: '\x1d'
这是提出小菜单的转义序列.我通过curses模块找到了这个:
from curses.ascii import ctrl
print ctrl(']')
Run Code Online (Sandbox Code Playgroud)