使用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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
浅谈Python traceback的优雅处理
Aug 31 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
python日志模块logbook使用方法
Sep 19 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Python求解排列中的逆序数个数实例
May 03 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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与XML的PDF文档生成技术
2006/10/09 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
php文件缓存方法总结
2016/03/16 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
JavaScript函数详解
2014/11/17 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
Python生成8位随机字符串的方法分析
2017/12/05 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
python 实现简易的记事本
2020/11/30 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
学校三节实施方案
2014/06/09 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers
LeetCode189轮转数组python示例
2022/08/05 Python