1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python自动化备份网络设备配置

Python自动化备份网络设备配置

时间:2023-08-28 22:51:20

相关推荐

Python自动化备份网络设备配置

前提:

/weixin_50299079/article/details/109300864

好嘞,废话不多说,开始搞

本文以Cisco CSR1000V设备配合Python来完成

编写Python脚本【backup.py】,实现对设备的配置进行备份操作

[root@alex-Ansible ~]# cat backup.pyimport paramikoimport timeimport getpassfrom datetime import datetimeusername ="admin"password = getpass.getpass('Password:')for i in range(1):ip="10.32.132.86"ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()command.send("terminal length 0"+"\n")output=(command.send("show running-config"+"\n"))time.sleep(2)now=datetime.now()backup=open("/root/backup/"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+ip+".txt","wb")recv=command.recv(65535)backup.write(recv)backup.close()ssh_client.close()

执行backup.py文件

[root@alex-Ansible ~]# python3 backup.pyPassword://这里输入ssh登陆设备密码[root@alex-Ansible ~]#

设备打印信息

*Oct 26 01:15:58.894: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.32.132.125] [localport: 22] at 01:15:58 UTC Mon Oct 26 *Oct 26 01:16:00.919: %SYS-6-LOGOUT: User admin has exited tty session 2(10.32.132.125)

在目录下查看备份的配置文件

[root@alex-Ansible ~]# cd /root/backup/[root@alex-Ansible backup]# ls-10-24-10.32.132.86.txt -10-26-10.32.132.86.txt[root@alex-Ansible backup]# cat -10-26-10.32.132.86.txt

定时执行配置
编辑计划任务配置文件

[root@alex-Ansible ~]# cat /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed0 1 * * * root python3 /root/backup.py //每天凌晨一点自动执行脚本进行备份

启动服务

[root@alex-Ansible ~]# systemctl enable crond[root@alex-Ansible ~]# systemctl restart crond

因为当前我的python文件为通过getpass()函数获取用户输入的SSH用户名并赋值给password。因此在执行自动保存配置文件时需要输入密码。因此我们可以将python文件改为

import paramiko import time from datetime import datetime username ="admin" password ="Aa123456"

这样在自动执行文件时,可以自动加载用户名和密码

[root@alex-Ansible ~]# python3 backup.py [root@alex-Ansible ~]#

函数详解

[root@alex-Ansible ~]# cat backup.pyimport paramiko //导入paramiko模块import time //导入time模块import getpass //导入gepass模块from datetime import datetime //导入datetime模块username ="admin" //设置SSH的用户名password = getpass.getpass('Password:') //通过getpass()函数获取用户输入的SSH用户名并赋值给passwordfor i in range(1):ip="10.32.132.86"ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()command.send("terminal length 0"+"\n")//调度交换机执行命令不分页显示,此为Cisco命令。(HUAWEI为[~HUAWEI]screen-length 0)output=(command.send("show running-config"+"\n"))//调度交换机执行命令time.sleep(2)//暂停2秒,并将命令执行过程赋值给output对象,通过print output语句回显内容now=datetime.now() //读取当前时间backup=open("/root/backup/"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+ip+".txt","wb")//打开备份文件recv=command.recv(65535) //将查询运行配置的回显内容赋值给recv这个对象backup.write(recv) //将回显内容写入backup这个对象,相当于写入了备份文件中backup.close()//关闭打开的文件ssh_client.close()//结束,断开SSH连接

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。