使用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中的True,False条件判断实例分析
Jan 12 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
读取本地json文件,解析json(实例讲解)
Dec 06 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python lambda函数基本用法实例分析
Mar 16 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
Python 3 判断2个字典相同
Aug 06 Python
Golang GBK转UTF-8的例子
Aug 26 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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/09/11 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
laravel学习教程之存取器
2016/07/30 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
python读写ini配置文件方法实例分析
2015/06/30 Python
Python实现简单的语音识别系统
2017/12/13 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python之指数与E记法的区别详解
2019/11/21 Python
python列表推导式入门学习解析
2019/12/02 Python
python中数据库like模糊查询方式
2020/03/02 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
英语系毕业生自荐信
2013/10/31 职场文书
司马光教学反思
2014/02/01 职场文书
诚信承诺书模板
2014/05/26 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript