以下代码实现的流程: cdp -->获取相应链接的信息-->自动写进设备相对应的端口--->configure保存-->configure备份到TFTP服务器!

#!/usr/bin/pythonfrom netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException
import time
import sys
import getpass
import datetimeclass CiscoNetwork():def __init__(self,username,password):self.username = usernameself.password = passworddef CiscoDevice(self,iplist):self.device={'device_type':'cisco_ios','username':self.username,'password':self.password,'ip':iplist}print('-'*100)print "[+]connect to network device... %s" %(iplist)self.connect = ConnectHandler(**self.device)self.connect.enable()def gethostname(self):self.hostname = self.connect.find_prompt()self.hostname = self.hostname.replace("#","")print self.hostnamedef cdpconfig(self):self.output = self.connect.send_command('show cdp nei')lines = self.output.splitlines()[5:-2]#print lineshostname = Noneconfig = []for line in lines:words = line.split()if len(words) == 1:hostname = words[0].split('.')[0]elif hostname is None:hostname = words[0].split('.')[0]local = ''.join(words[1:3])remote = ''.join(words[-2:])description = '_'.join((hostname,remote))config.append('interface' + ' '+ local)config.append('description' + ' ' + description)hostname = Noneelse:local = ''.join(words[0:2])remote = ''.join(words[-2:])description = '_'.join((hostname,remote))config.append('interface' + ' '+ local)config.append('description' + ' ' + description)hostname = Noneself.config ='\n'.join(config)def configure(self):configure = self.connect.send_config_set(self.config)saveconfigure = self.connect.send_command('write  memory')def backup(self,tftpip):date = datetime.datetime.now().strftime('%Y-%m-%d')bkhostname   = '_'.join((self.hostname,date))backupcmd    =  'copy running-config tftp:'self.tftpip  =  tftpipbkconf  = '\n'.join((backupcmd,self.tftpip,bkhostname))self.bkconf  = self.connect.send_command(bkconf)def close(self):if self.connect is not None:self.connect.disconnect()self.connect = Noneprint '[+] Network devices complete all settings!'if __name__ == '__main__':print "[+] This Program is beging done......."#username = raw_input('Username:')#password = getpass.getpass()for iplist in open("/opt/other/ip.txt"):try:switch = CiscoNetwork('admin','Password.123')switch.CiscoDevice(iplist)switch.gethostname()switch.cdpconfig()switch.configure()switch.backup('172.16.200.201')switch.close()except (EOFError, NetMikoTimeoutException):print ('Can not connect to Device!')

转载于:https://blog.51cto.com/arckyli/2068461

Python与Cisco的事儿之四相关推荐

  1. python备份cisco交换机_Python备份Cisco交换机配置 | CN-SEC 中文网

    最近帮同事写一段关于导出cisco交换机的脚本,发现网上的资料不是太多,仅有的几个也有不少错误,这里分享一个python操作cisco交换机的库. 经过对网上的资料查找,发现如下几个库,吐槽一下百度搜 ...

  2. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  3. 运维少年系列 python and cisco (1)

    运维少年系列 python and cisco (1) 预备知识 本系列文章需要各位具有CCNA/HCNA基础知识(知道命令怎么敲) python 本系列文章需要使用到的python版本为2.7,模块 ...

  4. python备份cisco交换机_python,自动备份交换机配置

    参考文献 参考文献1:https://www.oschina.net/code/snippet_7933_47935 测试代码 前言:这个程序用来批量备份博达交换机的配置,需要在桌面打开tftpd32 ...

  5. python备份cisco交换机_1.自动备份思科交换机配置

    自动备份思科交换机配置 2017-10-11 Python 宅必备 这个专题主要是一些日常用到的Python程序,不定期更新~~ 备份原理 首先读取txt文档中的ip地址 然后循环地址,通过是我提出函 ...

  6. Python和单元测试那些事儿

    以前我是不写任何测试的,后来偶尔写单元测试,现在我主动写单元测试 ----- 不得 不承认,测试是有其存在必要性的,要说为什么的话,大概又会引发语言的强弱类型和 是否静态语言之争了吧. 就目前而言,个 ...

  7. 可以运行python的路由器_用python管理Cisco路由器

    目前DevOps是整个运维发展的方向,Network的运维也一样.使用程序控制底层的路由器是最基本的要求之一. 本文简单解释如何用Python控制路由器,对网络设备进行配置. Python和网络设备连 ...

  8. python备份cisco交换机_python备份交换机配置基础教程

    Python下能支持telnet的模块telnetlib是内置模块,直接import就可以了,其基本的使用方法也是比较简单的 #!/usr/bin/sh #coding:utf-8 import te ...

  9. python 提取网页正文_小苹果来科普 | 关于python爬虫的那些事儿

    python爬虫--抓取小说 爬虫=Python? 网络爬虫是什么? 不好意思,这些网上查的到的东西我不愿意打字啊,请移步百度百科-- 使用python抓取网页信息少不了一些有关html的知识 首先要 ...

最新文章

  1. c++结构体定义和使用_【C语言更新】结构体的定义及使用
  2. rust怎么传送坐标_梦幻西游电脑版:金银锦盒修改后资金怎么攥?仅需知道六个小技巧!...
  3. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
  4. Self Crossing
  5. JavaScript 面向对象的程序设计1
  6. 浅谈 OneAPM 在 express 项目中的实践
  7. CVPR 2020|打脸SOTA!不能忍,谷歌发起图像匹配挑战赛
  8. 新版Ubuntu安装日文输入法
  9. img元素srcset属性浅析
  10. python运行脚本被杀死_Python脚本被杀死
  11. 使用闲置迅捷无线路由器桥接指南(扩大WIFI覆盖面)
  12. matlab相反数计数,怎么把origin表格中的数改成相反数
  13. 家里可以装网吧无盘服务器吗,我在家里想装个网吧系统,求好的网吧系统。请专业的来个连接我...
  14. Aluminium cold plate
  15. 数字化转型,有你有我
  16. 【我想对策划说的事】-- 入职dy一年后被邀请召开的扯淡分享会讲稿
  17. FT、DTFT和DFT之间的关系
  18. IDEA设置背景图片
  19. Android高德地图试用
  20. linux下mv命令参数详解,linux下的mv命令使用详解

热门文章

  1. Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
  2. 语言相关系数显著性_相关性分析在SPSS中的具体操作,一文读懂相关系数的含义及使用——【杏花开生物医药统计】...
  3. 趋势修改服务器地址,趋势客户端修改连接服务器
  4. matlab-绘图-直角坐标系
  5. 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
  6. 如何让Jupyter Notebook支持pytorch、tensorflow
  7. python3环境下“No module named nrrd”的解决办法
  8. 【 MATLAB 】gallery 中的 uniformdata
  9. 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox
  10. 进程间通信-Queue