热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python备份cisco交换机_python通过telnet(ciscolib和paramiko\netmiko)库批量备份交换机...

第一种telnet-ciscolib备份交换机配置文件:cisco库安装地址:从Github上面下载,进入安装目录:pyth

第一种telnet - ciscolib备份交换机配置文件:

cisco库安装地址:从Github上面下载,进入安装目录:python setup.py install即可

[root@zabbix609 backupsw]# cat telnet_switch3560.py

# -*- coding: utf-8 -*-

import ciscolib

import time

import datetime

def main():

PASSWORD="123567567"

USERNAME="root"

ENABLE_PWD="123456"

t = datetime.datetime.now()

ot = t.strftime("%Y-%m-%d")

for ip in open('sw3560.txt').readlines():

ip = ip.strip()

if USERNAME != "":

switch = ciscolib.Device(ip, PASSWORD, USERNAME, ENABLE_PWD)

else:

switch = ciscolib.Device(ip, PASSWORD, enable_password=ENABLE_PWD)

try:

switch.connect()

print("Logged into %s,Successful" % ip)

except ciscolib.AuthenticationError as e:

print("Couldn't connect to %s: %s" % (ip, e.value))

continue

except Exception as e:

print("Couldn't connect to %s: %s" % (ip, str(e)))

continue

switch.enable(ENABLE_PWD)

switch.cmd("enable")

switch.cmd("c#andphp\n")

switch.cmd("copy running ftp:")

switch.cmd("10.6.7.15")

switch.cmd(ip + "-" + ot + "config.text")

switch.disconnect()

if __name__ == '__main__':

main()

第二种通过SSH加密验证登录备份交换机:paramiko库,基于python 2.7 -->pip install paramiko

[root@zabbix609 backupsw]# ls

py-netmiko-bakeup.py ssh_switch2960.py sw2960.txt sw3560.txt telnet_switch3560.py

[root@zabbix609 backupsw]# cat ssh_switch2960.py

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import paramiko

import time

import getpass

import datetime

username = raw_input("Username:")

password = getpass.getpass("Password:")

t = datetime.datetime.now()

ot = t.strftime("%Y-%m-%d")

f = open("sw2960.txt","r")

for line in f.readlines():

ip = line.strip()

ssh_client = paramiko.SSHClient()

ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh_client.connect(hostname=ip,username=username,password=password)

print "成功登录到Cisco交换机 ", ip

print t

command = ssh_client.invoke_shell()

command.send("enable\n")

command.send("c#andphp\n")

command.send("copy flash:config.text ftp:\n")

command.send("10.6.7.15\n")

command.send (ip + "-" + ot + "config.text\n")

time.sleep(1)

output = command.recv(65535)

print output

f.close()

ssh_client.close

第三种:通过netmiko来管理,这个库非常强大当然也可以管理其它类型交换机

[root@zabbix609 backupsw]# cat py-netmiko-bakeup.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Date: 2019/11/27

# Created by Kelvin

from netmiko import ConnectHandler

import time

import os

def Cisco(ip):

"思科交换机配置导出函数"

cisco_881 = {

'device_type': 'cisco_ios',

'ip': ip,

'username': 'admin',

'password': '1235325',

'port': 22, # optional, defaults to 22

'secret': '134234234', # optional, defaults to ''

'verbose': False, # optional, defaults to False

}

print u'正在连接交换机:%s\n' % (ip)

net_connect = ConnectHandler(**cisco_881)

net_connect.enable()

commands = [

'show run',

]

timestr = time.strftime('%Y-%m-%d', time.localtime(time.time()))

for cmd in commands:

filename = u'%s_%s_%s.text' % (ip, cmd.replace(' ', '_'), timestr)

save = open(filename, 'w')

print u'正在执行命令:' + cmd

result = net_connect.send_command(cmd)

save.write(result)

print u'命令执行完毕,结果保存于当前目录%s中!\n' % filename

net_connect.disconnect()

if __name__ == '__main__':

ips = [

'10.6.110.1',

'10.6.110.2',

'10.6.110.3',

'10.6.110.5',

'10.6.110.6',

'10.6.110.16',

]

for ip in ips:

Cisco(ip)

# 上传文件至目标服务器

rsync = 'rsync -auv --password-file=/etc/rsyncd.passwd *.text rsync@192.168.1.4::webreport'

if os.system(rsync) == 0:

print u'文件上传成功!'

else:

print u'文件上传失败!'



推荐阅读
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 在C#/ .NET中,处理基督面前的日期没有内置支持,需要编写自己的代码。本文介绍了在处理此类日期时的最佳方法,并提供了一个示例链接,可以参考编码的解决方案。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 原文链接:Python:获取“3年前的今天”的日期时间Python:getdatetimefor3yearsagotoday在Python中,如何获取3年前的今天的datetime ... [详细]
  • 华为和阿里VPN
    阿里云创建VPN1、 创建VPN网关2、 填写名称,选择对应的VPC,不指定交换机,选择带宽3、购买的是IPSEC-VPN不开启SSLVPN,点击立即购买 4、 创建客户网关  ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 我正在编写一个脚本,它将根据以下内容从基本HTML页面中提取数据:URL中的第一个参数在-90.0和90.0(含)之间浮动,第二个数字在- ... [详细]
author-avatar
翟志军2502905177
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有