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

2023-05-16

前提:

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:                    //这里输入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 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                                 //导入paramiko模块
import time                                     //导入time模块
import getpass                                  //导入gepass模块
from datetime import datetime                   //导入datetime模块

username ="admin"                               //设置SSH的用户名
password = getpass.getpass('Password:')         //通过getpass()函数获取用户输入的SSH用户名并赋值给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")          //调度交换机执行命令不分页显示,此为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连接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python自动化备份网络设备配置 的相关文章

随机推荐

  • 电路设计_运算放大器应用

    电路设计 运算放大器应用 说明 xff1a 运算放大器是个万用宝 xff0c 要好好利用起来 xff0c 1 电压跟随 xff1a 起到隔离作用 xff0c 高阻抗变低阻抗 2 同向比例放大器 xff1a 放大输入电压信号 xff0c 在输
  • ESP32_IDF_基于win11的开发环境搭建

    ESP32 IDF 基于win11的开发环境搭建 说明 xff1a 1 安装ofline 2 编译下载 xff08 本来打算使用vscode配合使用来开发的 xff0c 奈何vscode环境真难搞 xff0c 放弃了 xff0c 用不惯 x
  • 树莓派的联网方式

    树莓派的多种联网方式 配置WiFi文件将空白的ssh文件放入sd卡配置WiFI文件 家庭局域网或热点查找树莓派ip 通过网线联网 配置WiFi文件 在sd卡中烧录系统之后 xff0c sd卡中会有如下程序 xff1a 将空白的ssh文件放入
  • STM32F103系列PWM波

    话不多说 xff0c 直接上我能跑通的代码 pwm h span class token macro property span class token directive hash span span class token direct
  • HTTP的几种认证方式之DIGEST 认证(摘要认证) 服务端

    https www cnblogs com xy ouyang p 12609387 html
  • Ubuntu 22.04LTS中使用aptitude来解决build-essential安装过程中过高版本包依赖问题

    小白近日安装完Ubuntu 22 04LTS后 xff0c 记不清是不是用了Software Updater还是自己手动upgrade了包 xff0c 导致在配置编译工具build essential 输入sudo apt install
  • 解决com.github.penggle kaptcha 2.3.2 报错

    需要从该地址处kaptcha的jar包下载位置 xff0c 从该地址下载jar包后 xff0c 可以把该jar包存放在C Users hp Desktop这个位置 xff0c 通过windows的cmd命令进入命令操作界面 执行以下命令 x
  • children 获取所有的子元素节点 2020/11/21

    children 获取所有的子元素节点 也是我们实际开发常用的 span class token operator lt span span class token operator span span class token consta
  • window常见事件 2020/11/24

    window onload是窗口 xff08 页面 xff09 加载时间 xff0c 当文档内容完全加载完成后触发该事件注意 xff1a window onload传统注册事件方式只能写一次 xff0c 如果有多个 xff0c 会以最后一个
  • 用if函数,进入无限循环,如何退出当前函数

    用if函数 xff0c 进入无限循环 xff0c 如何退出当前函数 wxml文件 span class token operator lt span view class span class token operator 61 span
  • form-type:submit和reset用法

    form type submit和reset用法 span class token operator lt span form bindsubmit span class token operator 61 span span class
  • checkbox背景颜色设置

    checkbox背景颜色设置 js文件 data span class token punctuation span languages span class token punctuation span span class token
  • MongoDB安装方案

    安装MongoDB 黑马头条项目 43 人力资源后台项目的接口服务均采用了 MongoDB 43 KOA2 技术栈 xff0c 所以在使用本地服务之前 xff0c 我们需要首先安装MongoDB xff0c 这也是该环节中出问题最多的一项
  • 小程序生成海报携带参数-云函数生成二维码

    1 逻辑代码 span class token keyword async span span class token function qcFn span span class token punctuation span span cl
  • 小程序动画

    小程序动画 点击事件 span class token comment lt 三大特色 gt span span class token tag span class token tag span class token punctuati
  • 小程序云开发--内容安全审查API云调用

    云调用 云调用是小程序 云开发提供的在云函数中调用微信开放接口的能力 xff0c 需要在云函数中通过 wx server sdk 使用 接口方法 openapi span class token punctuation span secur
  • 如何通过异或运算快速简单的实现两个数的值的交换

    实现代码如下图所示 xff1a public class class01 public static void swap int a int b a 61 a b b 61 a b a 61 a b System out println a
  • Cisco ISE AAA认证

    ISE 介绍 思科身份服务引擎 ISE 是一种身份验证安全服务 可以在简单而灵活的界面中显示用户和设备 查看并通过网络平台共享详细信息 使其了解用户 设备和网络的具体情况 当然Cisco还有类型的产品 xff0c 比如NAC ACS 那么三
  • PNET模拟器 安装(附下载地址)

    PNET模拟器介绍 Lab is Simple PNET安装步骤 1 将OVA文件导入Vmware 2 注意点 3 开机 xff0c 进行安装 4 选择第一个 5 安装成功 6 打开浏览器输入上边的IP地址 7 选择Online Mode
  • Python自动化备份网络设备配置

    前提 xff1a https blog csdn net weixin 50299079 article details 109300864 好嘞 xff0c 废话不多说 xff0c 开始搞 本文以Cisco CSR1000V设备配合Pyt