ef get_config(ip_list): for ipaddr,os,name,pswd in ip_list: if os == 'huawei': session = ConnectHandler(device_type=os, ip=ipaddr, username=name, password=pswd, banner_timeout=300) print("connecting to "+ ipaddr + os + name + pswd) print("---- Getting configuration from {}-----------".format(ipaddr)) config_data = session.send_command('dis ip int brief ') print (config_data) session.disconnect() elif os == 'cisco_ios': session = ConnectHandler(device_type=os, ip=ipaddr, username=name, password=pswd, banner_timeout=300) print("connecting to "+ ipaddr + os + name + pswd) print("---- Getting configuration from {}-----------".format(ipaddr)) config_data = session.send_command("show running-config") #抓取配置引入config print(config_data) #回显内容,类似登录设备show run session.disconnect() 如何修改让if语句能否跑完整个list,例如第一个为huawei,第二个为cisco_ios,第三个为huawei,以及代码有什么需要修改的错误
时间: 2023-12-10 16:38:29 浏览: 115
你可以使用一个 for 循环来遍历整个 `ip_list` 列表,并在循环体内使用 if-else 语句对每个设备进行不同的操作,例如:
```
def get_config(ip_list):
for ipaddr, os, name, pswd in ip_list:
session = ConnectHandler(device_type=os, ip=ipaddr, username=name, password=pswd, banner_timeout=300)
print("Connecting to " + ipaddr + os + name + pswd)
print("---- Getting configuration from {}-----------".format(ipaddr))
if os == 'huawei':
config_data = session.send_command('dis ip int brief')
elif os == 'cisco_ios':
config_data = session.send_command("show running-config")
else:
print("Unsupported OS: " + os)
continue
print(config_data)
session.disconnect()
```
在上面的代码中,我们使用了一个 for 循环来遍历 `ip_list` 列表中的每个元素。对于每个元素,我们都创建了一个 `session` 对象,并使用 if-else 语句根据设备的操作系统类型来执行不同的命令。如果设备的操作系统类型不是 `huawei` 或 `cisco_ios`,我们会打印一个错误信息并使用 `continue` 跳过当前循环。最后,我们打印输出命令的结果,并使用 `session.disconnect()` 断开连接。
需要注意的是,这里的代码没有明显的语法错误,但如果运行时会出现任何异常,请检查是否正确安装了所需的库,并检查连接设备的用户名和密码是否正确。
阅读全文