使用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 开发者节省时间的10个方法
Oct 02 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
python的多重继承的理解
Aug 06 Python
Python将多个list合并为1个list的方法
Jun 27 Python
Django如何自定义分页
Sep 25 Python
python配置grpc环境
Jan 01 Python
Python3模拟curl发送post请求操作示例
May 03 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
Python进行特征提取的示例代码
Oct 15 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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页面间传递参数实例代码
2008/06/05 PHP
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 统计代码行数简单实例
2017/05/04 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
公司经理聘任书
2014/03/29 职场文书
大学生找工作求职信
2014/07/09 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
毕业欢送会致辞
2015/07/29 职场文书
党员心得体会范文2016
2016/01/23 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL