使用python telnetlib批量备份交换机配置的方法
作者:thinklog2018 发布时间:2022-08-17 02:24:00
标签:python,telnetlib,批量备份,交换机
使用了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
0
投稿
猜你喜欢
- 程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接 ,可以先设置变量然后通过INIT() 来选择
- Python爬取网页信息的步骤以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评
- 目前定时的操作有:一、Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(
- <%@ page language="java" import="java.util.*" p
- 需求背景:用户希望他登录之后,浏览器就帮他记住登录状态,这样他就不用每次进入的时候,都需要登录一次。session过期时间:如果我们没有设置
- FSO,正如UFO般令人激动、令人神往,当然更多的亦是让人欢喜让人忧。君不见某空间服务商广告:100MB空间只要60RMB/年,支持数据库,
- 一、前言1.1 回归分析是用于研究分析某一变量受其他变量影响的分析方法,其基本思想是以被影响变量为因变量,以影响变量为自变量,研究因变量与自
- 这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算),二维直方图可以让我们对不同
- 1,概念及原理:膨胀(Dilating) (或)(1)将图像 A 与任意形状的内核 (B),通常为正方形或圆形,进行卷积。(2)内核 B 有
- 本文实例讲述了python获取从命令行输入数字的方法。分享给大家供大家参考。具体如下:#--------------------------
- 本文我们来看一下如何使用 Python 将 QQ 好友头像拼成“五一快乐”四个字。我们可以将整个实现过程分为两步:爬取 QQ 好友头像、利用
- 实例代码:import tkinter as tk import tkinter.filedialogimport cv2def choos
- 引包引入对应的包,和原来一样写一个打印文字的方法import sys, random, pygamefrom pygame.lo
- 1.问:在DW中如何设置页面边距为0?答:在DW中似乎没有直接设置的方法,你只有在Html文档中插入以
- 【方法一】: 通过setuptools来安装python模块首先下载 http://peak.telecommunity.com/dist/
- php cookie中不能使用点号(句号),实际上不是很严格,应该说可以使用点号的cookie名,但会被转换,你命名一个cookie:$_C
- 本文实例讲述了php 使用 __call实现重载功能。分享给大家供大家参考,具体如下:<?php/** * Created by Ph
- 在学校修管理学的时候,有讲过一个管理激励的理论。管理激励是基于行为和认知科学的研究,来发现人们的需要、动机、目标和行为四者之间关系的核心理论
- 一,啥是Block Formatting Context当涉及到可视化布局的时候,Block Formatting Context提供了一个
- 本文实例讲述了ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能。分享给大家供大家参考,具体如下:验证码现在是用户登录、