前提:
https://blog.csdn.net/weixin_50299079/article/details/109300864
好嘞,废话不多说,开始搞
本文以Cisco CSR1000V设备配合Python来完成
编写Python脚本【backup.py】,实现对设备的配置进行备份操作
[root@alex-Ansible ~]# cat backup.py
import paramiko
import time
import getpass
from datetime import datetime
username ="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.py
Password:
[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 2020
*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
2020-10-24-10.32.132.86.txt 2020-10-26-10.32.132.86.txt
[root@alex-Ansible backup]# cat 2020-10-26-10.32.132.86.txt
定时执行配置
编辑计划任务配置文件
[root@alex-Ansible ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=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 executed
0 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.py
import paramiko
import time
import getpass
from datetime import datetime
username ="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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)