使用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中的split()函数的使用方法
Apr 07 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python同步两个文件夹下的内容
Aug 29 Python
python打开使用的方法
Sep 30 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
Django Form设置文本框为readonly操作
Jul 03 Python
详解python的变量缓存机制
Jan 24 Python
90行Python代码开发个人云盘应用
Apr 20 Python
Python 如何解决稀疏矩阵运算
May 26 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
读jQuery之二(两种扩展)
2011/06/11 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
javascript常用的方法整理
2015/08/20 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
js实现转动骰子模型
2019/10/24 Javascript
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Python实现将xml导入至excel
2015/11/20 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
python deque模块简单使用代码实例
2020/03/12 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
思想政治自我鉴定
2013/10/06 职场文书
物业管理员岗位职责范文
2013/11/25 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
医学检验专业自荐信
2014/09/18 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
民事答辩状格式范文
2015/05/21 职场文书
经营场所使用证明
2015/06/19 职场文书
2016中考冲刺决心书
2015/09/22 职场文书