使用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脚本内运行linux命令的方法
Jul 02 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
Django框架用户注销功能实现方法分析
May 28 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
Python 循环读取数据内存不足的解决方案
May 25 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
php递归函数怎么用才有效
2018/02/24 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
外贸学院会计专业应届生求职信
2013/11/14 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
导游词怎么写
2015/02/04 职场文书
2014年度个人总结范文
2015/03/09 职场文书
社区义诊通知
2015/04/24 职场文书
退休欢送会主持词
2015/07/01 职场文书
超市店长竞聘书
2015/09/15 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
合作协议书格式范本
2016/03/21 职场文书
建立共青团委员会的请示
2019/04/02 职场文书