昆明乐网网站建设,跨境电商商城源码,wordpress 常用的钩子,网站设计参考文献有哪些目录 拓扑图设备信息 netmiko涉及方法send_config_set()方法的简单示例代码输出结果代码解释导入模块配置信息config_device_interface_description 函数主程序块总结 send_config_set方法参数#xff1a;1. enter_config_mode2. config_commands3. enter_config_mode4. error… 目录 拓扑图设备信息 netmiko涉及方法send_config_set()方法的简单示例代码输出结果代码解释导入模块配置信息config_device_interface_description 函数主程序块总结 send_config_set方法参数1. enter_config_mode2. config_commands3. enter_config_mode4. error_pattern 拓扑图 设备信息
sw1 {device_type:cisco_ios,ip:192.168.100.11,username:python,password:123,session_log:Log/sw1.log
}
sw2 {device_type:cisco_ios,ip:192.168.100.12,username:python,password:123,session_log:Log/sw2.log
}
sw3 {device_type:cisco_ios,ip:192.168.100.13,username:python,password:123,session_log:Log/sw3.log
}
sw4 {device_type:huawei,ip:192.168.100.14,username:python,password:123,session_log:Log/sw4.log
}
sw5 {device_type:huawei,ip:192.168.100.15,username:python,password:123,session_log:Log/sw5.log
}
netmiko涉及方法
send_config_set() 自动进入设备的config模式配置发送完成设备接收到之后它还会自动退出config模式save_config() netmiko自动输入对应平台的保存命令并自动完成一部分交互。 比如华为的savey
send_config_set()方法的简单示例
代码
from netmiko import ConnectHandler
from deviceinfo import sw4,sw1config_cisco [interface g0/0, des This_is_Cisco_G_0/0_interface]
config_huawei [interface g1/0/0, des This_is_huawei_G_1/0/0_interface, commit]
def config_device_interface_description(device):with ConnectHandler(**device) as ssh_device:ssh_device.enable()if device[device_type] cisco_ios:config_output ssh_device.send_config_set(config_cisco)else:config_output ssh_device.send_config_set(config_huawei)print(config output:)print(config_output)# netmiko的send_config_set会自动进入config配置模式并配置但不会保存# 保存使用save_config()config_save_output ssh_device.save_config()print(\nconfig_save_output:)print(config_save_output)if __name__ __main__:for device in [sw4,sw1]:config_device_interface_description(device)输出结果
config output:
system-view
Enter system view, return user view with return command.
[~sw4_huawei]interface g1/0/0
[~sw4_huawei-GE1/0/0]des This_is_huawei_G_1/0/0_interface
[~sw4_huawei-GE1/0/0]commit
[~sw4_huawei-GE1/0/0]return
sw4_huaweiconfig_save_output:
save
Warning: The current configuration will be written to the device. Continue? [Y/N]:y
Now saving the current configuration to the slot 17 .
Info: Save the configuration successfully.
sw4_huaweiconfig output:
configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
sw1(config)#interface g0/0
sw1(config-if)#des This_is_Cisco_G_0/0_interface
sw1(config-if)#end
sw1#config_save_output:
write mem
Building configuration...
Compressed configuration from 3153 bytes to 1805 bytes[OK]
sw1#代码解释
这段代码的作用是通过使用 Netmiko 库自动配置 Cisco 和 Huawei 网络设备的接口描述。以下是代码的逐步解释
导入模块
from netmiko import ConnectHandler
from deviceinfo import sw4, sw1netmiko这是一个用于通过 SSH 连接网络设备并发送命令的 Python 库。deviceinfo这个模块可能包含了 sw4 和 sw1 设备的连接信息例如设备的 IP 地址、用户名、密码等。
配置信息
config_cisco [interface g0/0, des This_is_Cisco_G_0/0_interface]
config_huawei [interface g1/0/0, des This_is_huawei_G_1/0/0_interface, commit]config_cisco针对 Cisco 设备的配置命令设置接口 g0/0 的描述为 This_is_Cisco_G_0/0_interface。config_huawei针对 Huawei 设备的配置命令设置接口 g1/0/0 的描述为 This_is_huawei_G_1/0/0_interface并且包含 commit 命令来提交配置。
config_device_interface_description 函数
def config_device_interface_description(device):with ConnectHandler(**device) as ssh_device:ssh_device.enable()if device[device_type] cisco_ios:config_output ssh_device.send_config_set(config_cisco)else:config_output ssh_device.send_config_set(config_huawei)print(config output:)print(config_output)config_save_output ssh_device.save_config()print(\nconfig_save_output:)print(config_save_output)ConnectHandler(**device)使用 device 字典中的参数打开与设备的 SSH 连接设备类型、IP 地址、用户名、密码等。ssh_device.enable()进入特权模式允许进行配置更改。设备类型检查 如果设备类型是 cisco_ios则发送 Cisco 特有的配置命令config_cisco。否则发送 Huawei 特有的配置命令config_huawei。 send_config_set()将配置命令列表发送到设备自动进入配置模式并应用配置。save_config()保存配置更改此步骤在退出配置模式后非常重要以确保更改被持久化。函数会打印配置命令执行的输出和保存操作的输出。
主程序块
if __name__ __main__:for device in [sw4, sw1]:config_device_interface_description(device)这个循环遍历 sw4 和 sw1 两个设备从 deviceinfo 模块导入并对每个设备调用 config_device_interface_description 函数进行配置。
总结
该脚本自动连接 Cisco 和 Huawei 设备根据设备类型配置接口描述。对于 Cisco 设备设置 g0/0 接口的描述对于 Huawei 设备设置 g1/0/0 接口的描述并提交更改。配置应用后脚本会保存配置并打印配置输出和保存操作的结果。
这段代码简化了在多个设备上进行接口描述配置的操作并且能够自动根据设备类型Cisco 或 Huawei选择不同的配置命令。
send_config_set方法参数
1. enter_config_mode
是否进入配置模式config默认True会自动进入输入config_commands参数中所有内容后根据exit_config_mode的值是否自动退出特权模式
2. config_commands
需要执行的命令一般用列表或元组。每一个成员都是发送配置的一行。
3. enter_config_mode
默认True输入完命令后自动退出配置模式。
4. error_pattern
根据回显判断配置是否有误的正则。默认为空。如果设置了一个正则匹配上后会自动暂停后续的命令发送。 # error_pattern进行赋值如果某行命令回显符合正则则会抛出异常代码终止配置不会继续下发config_output conn.send_config_set(config_commandsconfig_cmds, error_patternrError:)以上如果遇到Error后会抛出异常。例如Error: Wrong parameter found at ^ position.会抛出 raise ConfigInvalidException(msg) netmiko.ssh_exception.ConfigInvalidException: Invalid input detected at command: interface GE2/0/0
一般来说华为的Error经常有^因此可以如下操作
# 故意对一个不存在的端口进行配置config_cmds [interface GE2/0/0, description cofiged by netmiko, commit]# error_pattern进行赋值如果某行命令回显符合正则则会抛出异常代码终止配置不会继续下发# 注意^在正则是开头的意思需要转义config_output conn.send_config_set(config_commandsconfig_cmds, error_patternr\^)最终会抛出异常 raise ConfigInvalidException(msg)
netmiko.ssh_exception.ConfigInvalidException: Invalid input detected at command: interface GE2/0/0