本篇整理一下使用Nornir3自动化备份交换机配置的相关内容。不过经测试对于一些比较老的华三、华为交换机目前没能实现备份。
default.yaml 此文件可以放一些默认参数,当nornir在hosts.yaml文件中找不到的参数时,默认会读取该文件。
1 2 3 4 username: root password: password123 port: 22 platform: hp_comware
hosts.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 sw1: hostname: 192.168.0.1 username: root password: 'qwer1234' port: 22 platform: huawei groups: - huawei sw2: hostname: 192.168.1.1 port: 23 platform: hp_comware_telnet groups: - h3c sw3: hostname: 192.168.2.1 username: root password: 'root' port: 23 platform: cisco_ios_telnet groups: - cisco
平台加_telnet为telnet连接方式。
groups.yaml 1 2 3 4 5 6 7 8 9 10 11 12 h3c: data: backup_configs: - display current-configure huawei: data: backup_configs: - display current-configure cisco: data: backup_configs: - show running-config
此文件一般放一些需要执行的命令相关。
脚本内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 from nornir import InitNornir from nornir_netmiko import netmiko_send_command from nornir_utils.plugins.tasks.files import write_file from nornir_utils.plugins.functions import print_result,print_title import datetime import os switch = InitNornir(config_file="config.yaml") def backup(task): cmds = task.host.groups[0].data.get('backup_configs') for cmd in cmds: result = task.run(netmiko_send_command,command_string=cmd,max_loops=500) print(result) output = result.result file_name = datetime.datetime.now().strftime('%Y-%m-%d') if not os.path.exists(file_name): os.mkdir(file_name) write_result = task.run(write_file, filename=file_name+'/'f'{task.host.hostname}.txt', content=output, ) print_title("正在备份交换机配置.....") results = switch.run(task=backup) print_result(results)
此脚本实现是创建一个日期为名称的文件夹,并读取交换机配置写入以IP地址的txt文本,然后放到当天日期名称的文件夹。
可以结合linux平台、windows平台计划定时任务实现自动化备份配置。