使用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爬虫之抓取糗事百科代码分享
Nov 06 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
Python走楼梯问题解决方法示例
Jul 25 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python进度条的使用
May 17 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 数组的创建、调用和更新实现代码
2009/03/09 PHP
深入分析php之面向对象
2013/05/15 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
浅析javascript的return语句
2015/12/15 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python实现多线程采集的2个代码例子
2014/07/07 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
python实现网站的模拟登录
2016/01/04 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
计算机网络专业个人的自我评价
2013/10/17 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
英语导游词
2015/02/13 职场文书
女方离婚起诉书
2015/05/18 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis