在 IP 地址列表中循环
Cycling through a list of IP addresses
我有下面的代码,它会在 .txt 文件中查找 IP 地址,然后转到设备和 return 命令,然后它会打印到请求的文件和所有内容有效。
我无法让它做的是循环遍历一系列 IP 地址和 return 不同设备的命令。当我向 .txt 列表中添加多个 IP 时,出现脚本超时错误,通过两次添加相同的地址证明了这一点,所以我知道地址是好的,因为文件中只有一个地址它工作得天衣无缝。
我正在寻找一种循环遍历 10 个 IP 地址和 运行 相同命令的方法。
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\Users\NewdayTest.txt','w')
old_stdout = sys.stdout
sys.stdout = fd
platform = 'cisco_ios'
username = 'Username'
password = 'Password'
ip_add_file = open(r'C:\Users\IPAddressList.txt','r')
for host in ip_add_file:
device = ConnectHandler(device_type=platform, ip=host, username=username, password=password)
output = device.send_command('terminal length 0')
output = device.send_command('enable')
print('##############################################################\n')
print('...................CISCO COMMAND SHOW RUN OUTPUT......................\n')
output = device.send_command('sh run')
print(output)
print('##############################################################\n')
print('...................CISCO COMMAND SHOW IP INT BR OUTPUT......................\n')
output = device.send_command('sh ip int br')
print(output)
print('##############################################################\n')
fd.close()
为清楚起见,下面给出的答案完全符合我的要求,因此代码的开头如下所示:
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\Users\NewdayTest.txt','w')
old_stdout = sys.stdout
sys.stdout = fd
platform = 'cisco_ios'
username = 'Username'
password = 'Password'
ip_add_file = open(r'C:\Users\IPAddressList.txt','r')
for host in ip_add_file:
host = host.strip()
device = ConnectHandler(device_type=platform, ip=host, username=username, password=password)
output = device.send_command('terminal length 0')
以此类推 运行。
我的猜测是您的 ConnectHandler
不理解 host
字符串末尾有一个换行符。
试试这个:
for host in ip_add_file:
host = host.strip()
...
我有下面的代码,它会在 .txt 文件中查找 IP 地址,然后转到设备和 return 命令,然后它会打印到请求的文件和所有内容有效。
我无法让它做的是循环遍历一系列 IP 地址和 return 不同设备的命令。当我向 .txt 列表中添加多个 IP 时,出现脚本超时错误,通过两次添加相同的地址证明了这一点,所以我知道地址是好的,因为文件中只有一个地址它工作得天衣无缝。
我正在寻找一种循环遍历 10 个 IP 地址和 运行 相同命令的方法。
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\Users\NewdayTest.txt','w')
old_stdout = sys.stdout
sys.stdout = fd
platform = 'cisco_ios'
username = 'Username'
password = 'Password'
ip_add_file = open(r'C:\Users\IPAddressList.txt','r')
for host in ip_add_file:
device = ConnectHandler(device_type=platform, ip=host, username=username, password=password)
output = device.send_command('terminal length 0')
output = device.send_command('enable')
print('##############################################################\n')
print('...................CISCO COMMAND SHOW RUN OUTPUT......................\n')
output = device.send_command('sh run')
print(output)
print('##############################################################\n')
print('...................CISCO COMMAND SHOW IP INT BR OUTPUT......................\n')
output = device.send_command('sh ip int br')
print(output)
print('##############################################################\n')
fd.close()
为清楚起见,下面给出的答案完全符合我的要求,因此代码的开头如下所示:
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\Users\NewdayTest.txt','w')
old_stdout = sys.stdout
sys.stdout = fd
platform = 'cisco_ios'
username = 'Username'
password = 'Password'
ip_add_file = open(r'C:\Users\IPAddressList.txt','r')
for host in ip_add_file:
host = host.strip()
device = ConnectHandler(device_type=platform, ip=host, username=username, password=password)
output = device.send_command('terminal length 0')
以此类推 运行。
我的猜测是您的 ConnectHandler
不理解 host
字符串末尾有一个换行符。
试试这个:
for host in ip_add_file:
host = host.strip()
...