使用python telnetlib批量备份交换机配置的方法


Posted in Python onJuly 25, 2019

使用了telnetlib模块,首先登录到交换机,列出并获取配置文件的名称,然后通过tftp协议将配置文件传输到文件服务器上,为避免配置文件覆盖,将备份的配置文件名称统一加入日期以作区分。

1. 登录方式和口令有好几种,比较懒惰,通过不同列表以做区分,如果每个交换机口令都不相同的话,就需要额外处理了。

2. 交换机的配置文件也有多种类型,也是通过列表进行区分。

3. 有些交换机支持ftp和sftp,但测试发现有些虽然有相应的客户端命令,但传输总有问题。也不能将每个交换机都配置为ftp服务器,不安全也不方便。最后采用tftp解决。tftp比较简单,没有办法创建目录以区分不同日期的备份。好在配置文件已经加入了日期做区分,马马虎虎可以运行了。

import telnetlib,sys

from datetime import date
today=date.today()
print(today)
ipaddrset1=['192.168.1.19','192.168.1.29','192.168.1.59']
ipaddrset2=['192.168.1.39','192.168.1.49','192.168.1.69','192.168.1.56','192.168.1.6','192.168.1.9','192.168.1.24',
      '192.168.1.72','192.168.1.73','192.168.1.74','192.168.1.75','192.168.1.76','192.168.1.41','192.168.1.16','192.168.1.32',]
ipaddrset3=['192.168.1.51','192.168.1.52','192.168.1.53','192.168.1.54','192.168.1.55',
      '192.168.1.15','192.168.1.16','192.168.1.22','192.168.1.23','192.168.1.25','192.168.1.26','192.168.1.27',
      '192.168.1.28','192.168.1.7']
hostname='192.168.8.201'
tn=telnetlib.Telnet(hostname)
print(tn.read_until(b'Username:').decode('ascii'))
tn.write(b'**********\n')
print(tn.read_until(b'Password:').decode('ascii'))
tn.write(b'************\n')
print(tn.read_until(b'>').decode('ascii'))
for ipaddr in ipaddrset1:
  telnet_dest="telnet "+ipaddr
  tn.write(telnet_dest.encode('ascii')+b'\n')
  tn.read_until(b'Password:').decode('ascii')
  tn.write(b'**********\n')
  tn.read_until(b'>').decode('ascii')
  tn.write(b'dir\n')
  tn.read_until(b'>').decode('ascii')
  fn=str(today)+"_"+str(ipaddr)+"_vrpcfg.zip \n"
  cmdli="tftp 192.168.5.33 put vrpcfg.zip " +str(fn)
  tn.write(cmdli.ede('ascii'))
  tmp=tn.read_until(b'>').decode('ascii')
  if "successfully" in tmp:
    print(str(ipaddr)+" backup successfully!")
  else:
    print(str(ipaddr)+" backup NOT successfully!")
  tn.write(b'quit\n')
  tn.read_until(b'>')
for ipaddr in ipaddrset2:
  telnet_dest="telnet "+ipaddr
  tn.write(telnet_dest.encode('ascii')+b'\n')
  tn.read_until(b'Password:').decode('ascii')
  tn.write(b'**********\n')
  tn.read_until(b'>').decode('ascii')
  tn.write(b'dir\n')
  tn.read_until(b'>').decode('ascii')
  fn=str(today)+"_"+str(ipaddr)+"_startup.cfg \n"
  cmdli="tftp 192.168.5.33 put startup.cfg " +str(fn)
  tn.write(cmdli.encode('ascii'))
  tmp=tn.read_until(b'>').decode('ascii')
  if "successfully" in tmp:
    print(str(ipaddr)+" backup successfully!")
  else:
    print(str(ipaddr)+" backup NOT successfully!")
  tn.write(b'quit\n')
  tn.read_until(b'>')
for ipaddr in ipaddrset3:
  telnet_dest="telnet "+ipaddr
  tn.write(telnet_dest.encode('ascii')+b'\n')
  tn.read_until(b'Password:').decode('ascii')
  tn.write(b'************\n')
  tn.read_until(b'>').decode('ascii')
  tn.write(b'dir\n')
  tn.read_until(b'>').decode('ascii')
  fn=str(today)+"_"+str(ipaddr)+"_startup.cfg \n"
  cmdli="tftp 192.168.5.33 put startup.cfg " +str(fn)
  tn.write(cmdli.encode('ascii'))
  tmp=tn.read_until(b'>').decode('ascii')
  if "successfully" in tmp:
    print(str(ipaddr)+" backup successfully!")
  else:
    print(str(ipaddr)+" backup NOT successfully!")
  tn.write(b'quit\n')
  tn.read_until(b'>')

tn.write(b'exit\n')
tn.close()

以上这篇使用python telnetlib批量备份交换机配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现合并字典的方法
Jul 07 Python
python版简单工厂模式
Oct 16 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
python学生管理系统
Jan 30 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
python找出因数与质因数的方法
Jul 25 #Python
HTML的form表单和django的form表单
Jul 25 #Python
Python3 批量扫描端口的例子
Jul 25 #Python
python3 批量获取对应端口服务的实例
Jul 25 #Python
Python实现微信小程序支付功能
Jul 25 #Python
Form表单及django的form表单的补充
Jul 25 #Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 #Python
You might like
PHP 防恶意刷新实现代码
2010/05/16 PHP
php实现文件下载实例分享
2014/06/02 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP实现的简单缓存类
2015/07/29 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Python数据可视化图实现过程详解
2020/06/12 Python
德国网上药房:Apotal
2017/04/04 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
称象教学反思
2014/02/03 职场文书
趣味游戏活动方案
2014/02/07 职场文书
检查接待方案
2014/02/27 职场文书
企业出纳岗位职责
2014/03/12 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL