我正在使用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
然后我可以通过按'e'退出(它会立即退出而不需要'输入'键)
但是当我尝试在我的脚本中执行此操作时,stdin.write('^]e')
,stdin.write('\^]e')
,stdin.write('\c]e')
,stdin.write('\M-\C-]e')
等等。我一直在{ {1}}我的脚本按字面意思输入了这些字符。在stdout.read()
和time.sleep(0.1)
之间添加一点]
似乎没有帮助。
如何以编程方式输入该转义序列?
答案 0 :(得分:6)
最后我已经解决了。
答案简短:'\x1d'
这是调出小菜单的转义序列。我通过curses
模块找到了这个:
from curses.ascii import ctrl
print ctrl(']')