使用Python自动备份思科交换机配置
时间:2022-07-23
本文章向大家介绍使用Python自动备份思科交换机配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这个专题主要是一些日常用到的Python程序,不定期更新~~
备份原理
- 首先读取txt文档中的ip地址
- 然后循环地址,通过是我提出函数来获取配置信息
- 然后判断有没相应路径,没有则新建
- 最后保存在文件中
脚本内容
__author__ = '42274'
#encoding=utf-8
import telnetlib
import time
import datetime
import os
def switch(hostname,username,password1,password2,cmd1,cmd2):
tn = telnetlib.Telnet(hostname,timeout=10)
#tn.set_debuglevel(2)
tn.read_until("Username: ")
tn.write(username + "n")
tn.read_until("Password: ")
tn.write(password1 + "n")
tn.read_until(">")
tn.write('en'+ "n")
tn.read_until("Password: ")
tn.write(password2 + "n")
tn.read_until("#")
tn.write("terminal length 0"+"n")
tn.write(cmd1 + "n")
tn.write(cmd2 + "n")
#tn.read_until("#")
tn.write("exitn")
result=tn.read_all()
#print tn.read_all()
return result
if __name__ == '__main__':
# hostname = "10.65.5.1"
username = 'file'
password1='password1'
password2='password2'
cmd1='show run'
cmd2='show version'
file = open("g:swbackupipaddress.txt")
ipaddress=file.readlines()
for hostname in ipaddress:
hostname=hostname.strip()
now = datetime.datetime.now()
dirname=hostname
#dirname="%.2i%.2i%.2i" % (now.year,now.month,now.day)
filename_prefix='SWB_'+hostname
filename = "%s_%.2i%.2i%.2i%.2i%.2i%.2i" % (filename_prefix,now.year,now.month,now.day,now.hour,now.minute,now.second)+'.txt'
#filename = "%s_%.2i%.2i%.2i" % (filename_prefix,now.hour,now.minute,now.second)+'.txt'
result=switch(hostname,username,password1,password2,cmd1,cmd2)
base='g:\swbackup\'
path=base+dirname+'\'
ifExists=os.path.exists(path)
if not ifExists:
os.makedirs(path)
else:
pass
backfile=path+filename
fp=open(backfile,"w")
fp.write(result)
fp.close()
参数说明
- base 代表需要保存配置信息文件的根目录
- dirname代表子目录的名称,这里以ip地址作为子目录的名称
- path代表保存配置信息文件的目录位置
- filename_prefix代表保存配置信息文件的文件名前缀,采用’SWB+IP地址的形式
- filename代表配置信息文件的名称,这里采用前缀+备份时间作为最终文件名
- backfile即为最终保存配置文件的完整路径
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
- PHP容器类的两种实现方式示例
- Linux下Mysql定时任务备份数据的实现办法
- PHP抽象类和接口用法实例详解
- php+lottery.js实现九宫格抽奖功能
- PHP实现一个按钮点击上传多个图片操作示例
- php实现 master-worker 守护多进程模式的实例代码
- Ubuntu 18.04 Server 设置静态IP 的办法
- PHP依赖注入容器知识点浅析
- centos克隆linux虚拟机的完整步骤分享
- laravel框架中间件简单使用方法示例
- PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
- Smarty模板语法详解
- PHP保留两位小数的几种方法
- PHP七种数据类型知识点总结