您需要这些行在 for 循环中缩进
net_connect = ConnectHandler(**device)
output = net_connect.send_command('show ip interface brief')
print(output)
output = net_connect.send_command('show version')
print(output)
您的代码应如下所示:
from getpass import getpass
from netmiko import ConnectHandler
password = getpass()
RTR_01 = {
"device_type": "cisco_ios",
"host": "10.10.10.10",
"username": "admin",
"password": password,
}
RTR_02 = {
"device_type": "cisco_ios",
"host": "10.10.10.11",
"username": "admin",
"password": password,
}
device_list = [RTR_01, RTR_02]
for device in device_list:
print("Connecting to the device :" + device["host"])
net_connect = ConnectHandler(**device)
output = net_connect.send_command("show ip interface brief")
print(output)
output = net_connect.send_command("show version")
print(output)
net_connect.disconnect() # to clear the vty line when done
这是你的代码的一个更好的版本,它做同样的事情:
from getpass import getpass
from netmiko import ConnectHandler
password = getpass()
ipaddrs = ["10.10.10.10", "10.10.10.11"]
# A list comprehension
devices = [
{
"device_type": "cisco_ios",
"host": ip,
"username": "admin",
"password": password,
}
for ip in ipaddrs
]
for device in devices:
print(f'Connecting to the device: {device["host"]}')
with ConnectHandler(**device) as net_connect: # Using Context Manager
intf_brief = net_connect.send_command(
"show ip interface brief"
) # Inside the connection
facts = net_connect.send_command("show version") # Inside the connection
# Notice here I didn't call the `net_connect.disconnect()`
# because the `with` statement automatically disconnects the session.
# On this indentation level (4 spaces), the connection is terminated
print(intf_brief)
print(facts)
输出 (intf_brief
和facts
) 在连接外部打印,因为不再需要会话来打印任何收集的值。