使用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写xml文件的操作实例
Oct 05 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
Python List cmp()知识点总结
Feb 18 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python变量命名的7条建议
Jul 04 Python
Python搭建Spark分布式集群环境
Jul 05 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
PHP 多维数组排序实现代码
2009/08/05 PHP
php中的比较运算符详解
2013/10/28 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
纯javascript实现分页(两种方法)
2015/08/26 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
vuex 的简单使用
2018/03/22 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
es6中reduce的基本使用方法
2019/09/10 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
Python简单读取json文件功能示例
2017/11/30 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
python读取xml文件方法解析
2020/08/04 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
设计部经理的岗位职责
2013/11/16 职场文书
优秀演讲稿范文
2013/12/29 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis