【问题标题】:How to enter the escape characters for telnet programmatically?如何以编程方式输入 telnet 的转义字符?
【发布时间】: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


    【解决方案1】:

    我终于解决了。

    简短回答:'\x1d'

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

    from curses.ascii import ctrl
    print ctrl(']')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2012-12-26
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多