Python - 向多个设备发送行(IP地址在文本文件中列出)

1 投票
1 回答
2213 浏览
提问于 2025-04-18 16:14

我写了一个脚本,用来把配置推送到网络设备上,或者把各种命令的输出打印到文件里,做备份等等。

当我指定设备的IP地址时,这个脚本运行得非常好。我现在不太确定怎么写一个循环,让它能读取一个包含多个IP地址的文件,并一个一个地对这些设备执行命令。比如,我有一个名为IP.txt的文件,里面包含这些内容:

1.1.1.1
2.2.2.2
3.3.3.3

这是我的脚本:

import pexpect

HOST = "1.1.1.1"
user = "user"
password = "pass"

policymap = pexpect.spawn ('telnet '+HOST)
policymap.expect ('Username: ')
policymap.sendline (user)
policymap.expect ('Password: ')
policymap.sendline (password)
routerHostname = "router"
policymap.expect (router+'#')
policymap.sendline ('sh ip int br\r')

等等等等。

我只是想弄明白怎么让这个脚本读取文件里的IP列表,并对每个IP执行命令?抱歉我有点菜,我刚开始接触这个,正在通过一本书好好学习……但我发现这些问题的讨论对我很有帮助 :)

1 个回答

2
with open("IP.txt") as ips:
    all_ips = [x.rstrip() for x in ips] # get all ips in a list and strip newline 
    for ip in all_ips:
        policymap = pexpect.spawn ('telnet '+ ip) # first loop it will be 1.1.1.1, second loop  it will be 2.2.2.2 etc..

all_ips 的内容看起来像 ['1.1.1.1', '2.2.2.2', '3.3.3.3']

撰写回答