使用Python脚本来获取Cisco设备信息的示例


Posted in Python onMay 04, 2015

今天发现一个使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令。

下载后主要有3个文件:

Systems.py 定义了一些不同设备的操作系统及其常见命令。

Connectivity.py 是主要实现功能的代码,其实主要就是使用了python的pexpect模块。

Driver.py是一个示例文件。

[root@safe tratto-master]# cat driver.py
#!/usr/bin/env python
import Connectivity
import Systems
#telnet to a cisco switch
m = Systems.OperatingSystems['IOS']
s = Connectivity.Session("192.168.1.1",23,"telnet",m)
s.login("yourusername", "yourpassword")
# if your need to issue an "enable" command
s.escalateprivileges('yourenablepassword')
s.sendcommand("show clock")
s.sendcommand("show run")
s.logout()

以上就是示例driver.py的内容,使用很简单。

首先选择一个设备系统版本,此例cisco交换机,所以使用了IOS。作者现在写的可以支持的设备系统有:

OperatingSystems = {

  'IOS': CiscoIOS,

  'WebNS': CiscoWebNS,

  'OSX': AppleOSX,

  'SOS': SecureComputingSidewinder,

  'AOS': ArubaOS,

  'OBSD': OpenBSD,

  }

然后填写ip,端口,telnet或者ssh,最后就是上步选择的系统版本。login填上登陆凭证。

s.escalateprivileges是特权凭证。so easy~

以下是我写的一个使用脚本,抓取交换机的一些信息,然后保存到文件。

[root@safe tratto-master]# cat cisco.py
#!/usr/bin/env python
#
# Cisco Switch commands
# By s7eph4ni3
#
import Connectivity
import Systems
m = Systems.OperatingSystems['IOS']
iplist = ['192.168.1.1','192.168.1.2']
cmdlist = ['show ip int brief','show cdp nei detail','show arp','show ver']
for ip in iplist:
  if ip == '192.168.1.1':
    s = Connectivity.Session(ip,23,"telnet",m)
    s.login("", "passwd")
  else:
    s = Connectivity.Session(ip,22,"ssh",m)
    s.login("username", "passwd")
  s.escalateprivileges('enpasswd')
  f = open(ip+'.txt','w+')
  for cmd in cmdlist:
    a = s.sendcommand(cmd)
    f.write(ip+cmd+'\n')
    f.write(a+'\n')
  f.close()
  s.logout()
Python 相关文章推荐
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Python切片知识解析
Mar 06 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
pandas 时间格式转换的实现
Jul 06 Python
python变量的存储原理详解
Jul 10 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 #Python
编写Python脚本来获取Google搜索结果的示例
May 04 #Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 #Python
Python下线程之间的共享和释放示例
May 04 #Python
简单介绍Python中利用生成器实现的并发编程
May 04 #Python
简单分析Python中用fork()函数生成的子进程
May 04 #Python
python实现从字典中删除元素的方法
May 04 #Python
You might like
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
jquery实现转盘抽奖功能
2017/01/06 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
python zip文件 压缩
2008/12/24 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
python之消除前缀重命名的方法
2018/10/21 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Django的models中on_delete参数详解
2019/07/16 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
Python json转字典字符方法实例解析
2020/04/13 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
实习求职信
2013/12/01 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
经典大学生求职信范文
2014/01/06 职场文书
会计专业大学生职业生涯规划书
2014/02/11 职场文书
财务简历的自我评价
2014/03/05 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
高三化学教学反思
2016/02/22 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
MySQL数据库简介与基本操作
2022/05/30 MySQL