【发布时间】:2011-09-09 01:51:54
【问题描述】:
我正在使用 paramiko ssh 进入远程机器,到目前为止,这似乎工作正常
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') 等。我一直在 stdout.read() 中看到我的脚本已经输入了这些字面上的字符。在] 和e 之间放一点time.sleep(0.1) 似乎没有帮助。
如何以编程方式输入转义序列?
【问题讨论】:
标签: python ssh escaping telnet paramiko