python telnetlib.telnet() 未使用变量连接
python telnetlib.telnet() not connecting using variables
我正在编写脚本以从 GNS3 中的 Cisco 设备中提取配置。该脚本应该循环遍历一个文本文件,并将每一行的 IP 和端口切片到变量中。然后将这些变量作为 Telnetlib
.
的 IP 和端口参数输入到 telnet 连接中
import telnetlib
#Open file with list of switches
f = open ("C:\ProgramData\ports.txt")
#Telnet to each switch and configure it
for line in f:
linePort = line[10:]
lineIP = line[:-6]
print "Getting running-config " + lineIP + " " + linePort
tn = telnetlib.Telnet(lineIP,linePort)
然而,使用变量总是以抛出错误告终(见下文),但如果我硬编码相同的值,我可以毫无问题地创建连接。由于它使用硬编码值,我尝试在两个变量上强制使用 str()
的字符串类型,但它没有改变结果,它仍然抛出以下错误。
C:\Users\SomeUser>python %userprofile%\desktop\config.py
Getting running-config 127.0.0.1 5000
Traceback (most recent call last):
File "C:\Users\Michael\desktop\config.py", line 11, in <module>
tn = telnetlib.Telnet(lineIP,linePort)
File "C:\python27amd64\lib\telnetlib.py", line 211, in __init__
self.open(host, port, timeout)
File "C:\python27amd64\lib\telnetlib.py", line 227, in open
self.sock = socket.create_connection((host, port), timeout)
File "C:\python27amd64\lib\socket.py", line 557, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 10109] getaddrinfo failed
抛出的错误是 socket.gaierrr: [Errno 10109] getaddrinfo failed
,我已尝试调查该错误,但未能找到适合我的解决方案。鉴于这个过程应该是自动化的并且在一个循环中,让它与变量一起工作是至关重要的。因此,非常感谢你们能提供的任何帮助。
我在另一个问题中偶然发现了 answer 这个问题,这让我觉得自己是个疏忽大意的白痴。
当使用变量作为 Telnet
的参数时,端口需要是一个整数。因此,解决方案是通过使用 int(var)
强制它然后它连接没有问题。现在的工作代码如下。
import telnetlib
#Open file with list of switches
f = open ("C:\ProgramData\ports.txt")
#Telnet to each switch and configure it
for line in f:
linePort = line[10:]
lineIP = line[:-6]
print "Getting running-config " + lineIP + " " + linePort
tn = telnetlib.Telnet(lineIP,int(linePort))
我正在编写脚本以从 GNS3 中的 Cisco 设备中提取配置。该脚本应该循环遍历一个文本文件,并将每一行的 IP 和端口切片到变量中。然后将这些变量作为 Telnetlib
.
import telnetlib
#Open file with list of switches
f = open ("C:\ProgramData\ports.txt")
#Telnet to each switch and configure it
for line in f:
linePort = line[10:]
lineIP = line[:-6]
print "Getting running-config " + lineIP + " " + linePort
tn = telnetlib.Telnet(lineIP,linePort)
然而,使用变量总是以抛出错误告终(见下文),但如果我硬编码相同的值,我可以毫无问题地创建连接。由于它使用硬编码值,我尝试在两个变量上强制使用 str()
的字符串类型,但它没有改变结果,它仍然抛出以下错误。
C:\Users\SomeUser>python %userprofile%\desktop\config.py
Getting running-config 127.0.0.1 5000
Traceback (most recent call last):
File "C:\Users\Michael\desktop\config.py", line 11, in <module>
tn = telnetlib.Telnet(lineIP,linePort)
File "C:\python27amd64\lib\telnetlib.py", line 211, in __init__
self.open(host, port, timeout)
File "C:\python27amd64\lib\telnetlib.py", line 227, in open
self.sock = socket.create_connection((host, port), timeout)
File "C:\python27amd64\lib\socket.py", line 557, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 10109] getaddrinfo failed
抛出的错误是 socket.gaierrr: [Errno 10109] getaddrinfo failed
,我已尝试调查该错误,但未能找到适合我的解决方案。鉴于这个过程应该是自动化的并且在一个循环中,让它与变量一起工作是至关重要的。因此,非常感谢你们能提供的任何帮助。
我在另一个问题中偶然发现了 answer 这个问题,这让我觉得自己是个疏忽大意的白痴。
当使用变量作为 Telnet
的参数时,端口需要是一个整数。因此,解决方案是通过使用 int(var)
强制它然后它连接没有问题。现在的工作代码如下。
import telnetlib
#Open file with list of switches
f = open ("C:\ProgramData\ports.txt")
#Telnet to each switch and configure it
for line in f:
linePort = line[10:]
lineIP = line[:-6]
print "Getting running-config " + lineIP + " " + linePort
tn = telnetlib.Telnet(lineIP,int(linePort))