4

我正在使用 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'退出(它会立即退出,不需要'enter'键)

但是当我尝试在我的脚本中执行此操作时,通过stdin.write('^]e')stdin.write('\^]e')stdin.write('\c]e')stdin.write('\M-\C-]e')等。我一直看到stdout.read()我的脚本已经按字面意思输入了这些字符。time.sleep(0.1)]and之间放一点e似乎没有帮助。

如何以编程方式输入该转义序列?

4

1 回答 1

6

最后我已经解决了。

简短的回答:'\x1d'

这是调出小菜单的转义序列。我通过curses模块找到了这个:

from curses.ascii import ctrl
print ctrl(']')
于 2011-06-07T03:47:17.003 回答