【问题标题】:telnetlib errors with read_until带有 read_until 的 telnetlib 错误
【发布时间】:2013-08-31 21:07:13
【问题描述】:

我对 python 脚本非常陌生,但我想我会试一试,看看是否可以自动执行一些通过 Telnet 定期执行的简单任务。

我找到了一个基本的 python telnet 脚本:

import getpass
import sys
import telnetlib

HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until("login: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

tn.write("ls\n")
tn.write("exit\n")

print tn.read_all()

这“似乎”有效,但不会向控制台返回任何内容。由于登录过程需要几秒钟,我认为它太快了,需要等待用户提示。所以我尝试添加这个。

tn.read_until(">")

它不起作用...我收到此错误

  File "test.py", line 16, in <module>
    tn.read_until(">")
  File "/usr/lib/python2.7/telnetlib.py", line 319, in read_until
    return self.read_very_lazy()
  File "/usr/lib/python2.7/telnetlib.py", line 395, in read_very_lazy
    raise EOFError, 'telnet connection closed'
EOFError: telnet connection closed

我觉得我错过了一些简单的东西......但解决方案似乎在暗示我。任何意见将不胜感激!

【问题讨论】:

  • 也许你需要发送\r\n而不是\n,你可以用wireshark确认
  • 做到了!我用 \r 替换了 \n,现在它似乎正在奏效!

标签: python


【解决方案1】:

根据平台,您可能必须使用另一个行分隔符。试试\r\r\n

【讨论】:

    【解决方案2】:

    检查 this 链接是否 - 它可能会帮助你。我猜你可能想指定

    tn.write("vt100\n") 
    

    在打印出任何东西之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 2016-08-17
      • 2017-01-13
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多