使用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实现的登录和操作开心网脚本分享
Jul 09 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
Python PyQt5标准对话框用法示例
Aug 23 Python
python之消除前缀重命名的方法
Oct 21 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
python程序文件扩展名知识点详解
Feb 27 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
Python入门之使用pandas分析excel数据
May 12 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
2.PHP入门
2006/10/09 PHP
一个比较简单的PHP 分页分组类
2009/12/10 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
javascript第一课
2007/02/27 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
使用python实现扫描端口示例
2014/03/29 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Python中的Numpy矩阵操作
2018/08/12 Python
Python实现微信好友的数据分析
2019/12/16 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
矫正人员思想汇报
2014/01/08 职场文书
好学生评语大全
2014/05/05 职场文书
跑操口号
2014/06/12 职场文书
通知范文怎么写
2015/04/16 职场文书
redis限流的实际应用
2021/04/24 Redis
Python爬虫基础讲解之请求
2021/05/13 Python
PyMongo 查询数据的实现
2021/06/28 Python
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle