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

作者:thinklog2018 时间:2022-08-17 02:24:00 

使用了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()

来源:https://blog.csdn.net/thinklog2018/article/details/79973346

标签:python,telnetlib,批量备份,交换机
0
投稿

猜你喜欢

  • Python pyecharts实时画图自定义可视化经纬度热力图

    2023-12-24 10:14:21
  • linux下安装php扩展memcache的方法

    2023-11-21 19:49:02
  • python 服务器批处理得到PSSM矩阵的问题

    2021-05-19 12:21:13
  • django注册用邮箱发送验证码的实现

    2022-11-08 06:59:59
  • python pandas中对Series数据进行轴向连接的实例

    2022-08-07 11:52:21
  • golang语言实现的文件上传与文件下载功能示例

    2023-06-19 00:05:31
  • Numpy与Pytorch 矩阵操作方式

    2021-11-19 01:10:07
  • IE7的web标准之道 Ⅲ

    2008-08-20 12:55:00
  • asp两组字符串数据比较合并相同数据

    2011-04-14 11:08:00
  • python 爬虫爬取京东ps4售卖情况

    2022-05-19 01:35:28
  • PLSQLDeveloper登录远程连接Oracle的操作

    2023-07-23 03:34:22
  • window.location.hash属性介绍

    2008-03-21 12:39:00
  • python numpy中cumsum的用法详解

    2022-09-17 03:21:17
  • Python实现双向链表

    2022-06-12 17:41:34
  • python配置虚拟环境步骤

    2023-10-22 09:34:51
  • 栅格:灵活应变

    2008-07-22 12:22:00
  • python实现粒子群算法

    2021-03-20 02:27:34
  • 挑战! 纯Javascript 重现经典网游! <魔力宝贝>

    2008-10-04 10:37:00
  • python类的私有属性和公共属性说明

    2021-04-07 11:03:59
  • 高考考python编程是真的吗

    2023-11-13 04:48:47
  • asp之家 网络编程 m.aspxhome.com