我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python与Cisco的事儿之三

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python与Cisco的事儿之三

   以下代码可以实现登录网络设备后通过show cdp nei 命令查看邻居设备,然后利用拼接的方式来增加描述,最后再写进相对应的网络设备的接口。

#!/usr/bin/python

from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException
import time
import sys
import getpass
import StringIO
import pprint
 

class CiscoNetwork():
        def __init__(self,username,password):
                 self.username = username
                 self.password = password

        def 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("#","")
                

        def show(self):
                self.output = self.connect.send_command('show cdp nei')
                lines = self.output.splitlines()[5:-2]
                hostnames = None
                config = []
                for line in lines:
                    words = line.split()
                    if len(words) == 1:
                        hostnames = words[0].split('.')[0]
                    elif hostnames is None:
                        hostnames = words[0].split('.')[0]
                        local = ''.join(words[1:3])
                        remote = ''.join(words[-2:])
                        description = '_'.join((hostnames,remote))
                        config.append('interface' + ' ' + local)
                        config.append('description' +' ' + description)
                        hostnames = None
                    else:
                         local = ''.join(words[0:2])
                         remote = ''.join(words[-2:])
                         description = '_'.join((hostnames,remote))
                         config.append('interface' + ' '+ local)
                         config.append('description' + ' ' + description)
                         hostnames = None
                self.config='\n'.join(config)
        
        def configure(self):
                configure = self.connect.send_config_set(self.config)
                saveconfigure = self.connect.send_command('write  memory')
                print  configure
                print saveconfigure 
             
        def close(self):
                if self.connect is not None:
                       self.connect.disconnect()
                       self.connect = None

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.show()
                   switch.configure()
                   switch.close()
                except (EOFError, NetMikoTimeoutException):
                   print ('Can not connect to Device')

   01.png


   02.png

  




免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python与Cisco的事儿之三

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python与Cisco的事儿之三

以下代码可以实现登录网络设备后通过show cdp nei 命令查看邻居设备,然后利用拼接的方式来增加描述,最后再写进相对应的网络设备的接口。#!/usr/bin/pythonfrom netmiko import ConnectHandl
2023-01-31

Python与Cisco的事儿之四

以下代码实现的流程: cdp -->获取相应链接的信息-->自动写进设备相对应的端口--->configure保存-->configure备份到TFTP服务器!#!/usr/bin/pythonfrom netmiko import Con
2023-01-31

Python与Cisco 的事儿之二

坚持连续Python大战CiscoNetwork。 #!/usr/bin/python from netmiko import ConnectHandlerfrom netmiko.ssh_exception import NetMikoT
2023-01-31

Python与Cisco 的事儿

前几天写了一段代码,是用来检查思科设备的端口运行状态的,只是中间有些bug或是存在安全问题,比如密码写在脚本里,对网络不可以达的设备没有进行判断并加以跳过。以下对前两天写的代码进行修改。#!/usr/bin/python from netm
2023-01-31

浅谈Python基础之列表那些事儿

一、列表的格式二、列表的相关操作("增"、"删"、"改",“查”) <1> 添加元素 append()通过append可以向列表添加元素。 例:运行结果:<2> 修改元素("改") 修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才
2022-06-02

网络工程师与CISCO认证两者之间的区别

  网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。今天就跟小编一起来学习一下:网络工程师与Cisco认证两者之间的区别。  一、Cisco公司的背景  相信大家都应该有听说过CCNP以及CCNA这两种认证考试吧,毕竟这是Cisc
网络工程师与CISCO认证两者之间的区别
2024-04-18

Boltdb学习笔记之三--事务与并发控制

如果说数据库是软件工程领域的皇冠,而事务与并发控制可称之为皇冠上的钻石。本节将详细分析boltdb中如何实现事务与并发控制 事务 事务定义 boltdb中使用Tx表示事务, 定义如下: // Tx represents a read-only or read/
Boltdb学习笔记之三--事务与并发控制
2021-06-02

星球大战与Python之间的那些事

Python与星球大战背后的工业光魔 提起Python语言,很多人会想起系统运维、Web开发等工作。很少有人会知道Python也能够用于电影视觉特效的制作,其中就包括了《星球大战》某些电影特效的制作。 星战之父乔治·卢卡斯于1975年创建了
2022-06-04

python之事件驱动与异步IO

写服务器处理模型的程序时,通常有以下几种模型:  1.每收到一个请求,创建一个新的进程来处理该请求  2.每收到一个请求,创建一个新的线程来处理该请求  3.每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求(协程) 
2023-01-31

python基础入门之普通操作与函数(三)

目录正文操作函数本节主要介绍函数,但是函数是由操作组成的。那么就分为两部,一部分为操作一部分为函数。 正文 py世界中的操作。 操作 if: 在学习任何一门语言中,关系if,要关系另外一件事,那就是if是否只能判断bool,还是可以判断其他
2022-06-03

python之 * 与** 的区别

1.计算方面:*表示乘法      **表示指数幂运算2.作为函数的参数:1)调用函数时假设有函数 def test(a, b, c)test(*args):*表示传入的参数args是一个元组,把元组中的每一个元素按照次序作为参数传入,比如
2023-01-30

Android开发系列三之窗口的常用事件

相关阅读: Android开发系列二之窗口Activity的生命周期 Android开发系列一用按钮实现显示时间设置窗口标题事件和在Activity之间跳转。 新建一个项目,新建两个Activity:MainActivity,TitleAc
2022-06-06

Python之Pygame的Event事件模块

这篇文章主要介绍了Pygame的Event事件模块,事件(Event)是Pygame的重要模块之一,它是构建整个游戏程序的核心,Pygame定义了一个专门用来处理事件的结构,即事件队列,本文有一定参考价值,感兴趣的同学可以阅读参考
2023-05-14

python学习之对象的三大特性

在面向对象程序设计中,对象可以看做是数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。编写代码时,我们可以将所有功能都写在一个文件里,这样也是可行的,但是这样不利于代码的维护,你总不希望维护代码前,还需要从头至尾的通读一遍吧
2023-01-30

python之类与类之间的关系

在我们的世界中事物和事物之间总会有一些联系.   在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系   执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的. 随时可以更换另外一个东
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录