Python telnet连接到多个设备并返回命令输出

Python telnet连接到多个设备并返回命令输出,python,telnet,Python,Telnet,我在linux机器上运行python(2.6.2版),需要能够远程登录到一个长长的设备列表(大约300个)中,发送命令“sho ser”,并将该命令的结果输出返回到一个文件中,然后将列表中的每个连续设备的输出添加到新行。所有设备都列在文件中的单独行上 我找到了一些让我从另一篇文章开始的代码,但我不知道从这里该去哪里。我可以打开我称之为“hostlist”的列表,但我不知道如何告诉python将telnet发送到一个设备,运行命令,退出,然后转到下一个设备。任何帮助都将不胜感激 import ge

我在linux机器上运行python(2.6.2版),需要能够远程登录到一个长长的设备列表(大约300个)中,发送命令“sho ser”,并将该命令的结果输出返回到一个文件中,然后将列表中的每个连续设备的输出添加到新行。所有设备都列在文件中的单独行上

我找到了一些让我从另一篇文章开始的代码,但我不知道从这里该去哪里。我可以打开我称之为“hostlist”的列表,但我不知道如何告诉python将telnet发送到一个设备,运行命令,退出,然后转到下一个设备。任何帮助都将不胜感激

import getpass
import sys
import telnetlib

f = open('hostlist', 'r')

HOST = "%s" % f
user = raw_input("Enter your login name: ")
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("show ver\n")
tn.write("exit\n")

print tn.read_all()
收到此错误

Enter your login name: K3grb6hj9ld93a2
Password: 
Traceback (most recent call last):
 File "test.py", line 11, in <module>
    tn = telnetlib.Telnet(HOST)
 File "/usr/lib/python2.6/telnetlib.py", line 209, in __init__
    self.open(host, port, timeout)
 File "/usr/lib/python2.6/telnetlib.py", line 225, in open
    self.sock = socket.create_connection((host, port), timeout)
 File "/usr/lib/python2.6/socket.py", line 498, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  socket.gaierror: [Errno -2] Name or service not known
输入您的登录名:K3grb6hj9ld93a2
密码:
回溯(最近一次呼叫最后一次):
文件“test.py”,第11行,在
tn=telnetlib.Telnet(主机)
文件“/usr/lib/python2.6/telnetlib.py”,第209行,在__
self.open(主机、端口、超时)
文件“/usr/lib/python2.6/telnetlib.py”,第225行,打开
self.sock=socket.create_连接((主机、端口),超时)
文件“/usr/lib/python2.6/socket.py”,第498行,在create_connection中
对于getaddrinfo(主机、端口、0、SOCK_流)中的res:
socket.gaierror:[Errno-2]名称或服务未知

有什么问题吗?是否存在任何错误、异常,您是否测试了代码?只需在
f
上编写一个循环即可。。。你知道循环,对吧?当我试着运行它时,我得到了上面显示的错误。我知道如何做一个循环,但我不知道如何实现它。我有要作为hostlist打开的文件名,并尝试将HOST对象更改为hostlist打开的输出,但总是出现相同的错误。由于空间限制,在原始帖子中添加了错误