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

原创 2018年04月17日 13:20:46

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

锐捷交换机批量管理脚本(Python) 锐捷交换机管理脚本,刚接触python,感觉很好用,各种库功能很强。 #-*- encoding:GB2312 -*- impor...
  • gameyetfun
  • gameyetfun
  • 2014-10-04 17:45:29
  • 1402

python的PEXPECT模块进行交换机配置文件的自动备份

这篇文章的正确性,没有细细分析,但是知识点是好的: 参考地址:http://bbs.chinaunix.net/thread-1710118-1-1.html   #!/usr/bin/pyth...
  • wzm112
  • wzm112
  • 2012-07-14 13:26:45
  • 2733

expect备份交换机配置

expect备份交换机配置因公司备份需求,需要对所有的交换机进行配置备份。由于涉及到ssh登录并交互,所以选定expect工具。 注意 expect使用log_file会记录下所有触发expect时...
  • u010871982
  • u010871982
  • 2017-10-13 16:24:02
  • 992

Python使用Telnetlib模块实现telnet远程操作

Python使用Telnetlib模块实现telnet远程操作,Python内置了telnetlib模块,支持telnet远程操作,只要直接import就可以。 TypeError: 'in ' re...
  • lingfeng5
  • lingfeng5
  • 2017-06-26 21:44:33
  • 6339

思科设备配置自动备份脚本

  • 2017年03月29日 16:09
  • 2KB
  • 下载

Python实现Telnet自动连接检测密码

最近在学习Python网络编程,这个代码实现了Telnet自动连接检测root用户密码,密码取自密码本,一个一个检测密码是否匹配,直到匹配成功,屏幕输出停止。...
  • bubu8633
  • bubu8633
  • 2014-11-06 16:23:25
  • 9763

SecureCRT使用VBS脚本自动备份网络设备配置,目前支持部分H3C及dptech

根据网络上的脚本自行捣鼓了下crt自动备份,欢迎各网络管理员试用及提出优化建议。H3C备份方式主要为cfg通过TFTP导出,dptech为屏幕记录,请自行准备独立TFTP工具。 #$language...
  • squalliskm
  • squalliskm
  • 2017-06-01 23:05:31
  • 676

基于pexpect通过堡垒机备份交换机配置

#!/usr/bin/env python #coding=utf-8 ''' import time import pexpect time1 = time.strftime('%y.%m....
  • Trofish
  • Trofish
  • 2016-11-18 10:51:54
  • 471

利用python netmiko实现cisco网络设备配置备份和状态巡检

最近一直在学习网络运维自动化方面的东西,本着一起交流学习同时巩固自己学到的新知识开了此号。本次实验为利用python netmiko模块实现cisco设备配置备份和状态巡检。实验环境:    1.操作...
  • u012703479
  • u012703479
  • 2018-04-06 23:05:37
  • 158
收藏助手
不良信息举报
您举报文章:使用python telnetlib批量备份交换机配置
举报原因:
原因补充:

(最多只允许输入30个字)