Python-Netmiko从2列中读取



我有以下代码,它读取带有主机名列表的CSV,并运行2个命令。

我需要更改这一点,以便它接收的CSV文件有两列,一列包含主机名,另一列包含要插入该路由器的相应命令。

主机名 Comand
CPE_1111 sh ip int br
CPE_2222 sh运行
etc (…(

您的答案在于如何读取csv。您可以使用csv.DictReader()读取每一行并将其转换为字典。

import csv
with open(file="routers.csv", mode="rt") as f:
next(f)
lst = csv.DictReader(f=f, fieldnames=["ip", "cmd"])
ips_cmds = list(lst)
for ip_cmd in ips_cmds:
print("Hostname:", ip_cmd["ip"])
print("Command:", ip_cmd["cmd"], end="nn")
# Hostname: CPE_1111
# Command: show ip interface brief
# Hostname: CPE_2222
# Command: show running-config

然后,在连接到每个路由器的for loop中,可以从fieldnames中指定的密钥中选择所需的值。

conn = ConnectHandler(
device_type="cisco_ios",
ip=ip_cmd["ip"],
username=input("Username: "),
password=getpass(prompt="Password: "),
secret=getpass(prompt="Enable Secret: "),
fast_cli=False,
)

hostname = conn.send_command(command_string=ip_cmd["cmd"])

不要忘记为要执行的disconnect()函数添加括号。

conn.disconnect()

最新更新