0

我对 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

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

4

2 回答 2

0

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

于 2013-08-31T13:07:13.277 回答
0

检查链接是否可以帮助您。我想你可能想指定

tn.write("vt100\n") 

在打印出任何东西之前。

于 2013-08-31T13:00:57.497 回答