使用Python脚本来获取Cisco设备信息的示例
今天发现一个使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令。
下载后主要有3个文件:
Systems.py定义了一些不同设备的操作系统及其常见命令。
Connectivity.py是主要实现功能的代码,其实主要就是使用了python的pexpect模块。
Driver.py是一个示例文件。
[root@safetratto-master]#catdriver.py #!/usr/bin/envpython importConnectivity importSystems #telnettoaciscoswitch m=Systems.OperatingSystems['IOS'] s=Connectivity.Session("192.168.1.1",23,"telnet",m) s.login("yourusername","yourpassword") #ifyourneedtoissuean"enable"command s.escalateprivileges('yourenablepassword') s.sendcommand("showclock") s.sendcommand("showrun") 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是特权凭证。soeasy~
以下是我写的一个使用脚本,抓取交换机的一些信息,然后保存到文件。
[root@safetratto-master]#catcisco.py #!/usr/bin/envpython # #CiscoSwitchcommands #Bys7eph4ni3 # importConnectivity importSystems m=Systems.OperatingSystems['IOS'] iplist=['192.168.1.1','192.168.1.2'] cmdlist=['showipintbrief','showcdpneidetail','showarp','showver'] foripiniplist: ifip=='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+') forcmdincmdlist: a=s.sendcommand(cmd) f.write(ip+cmd+'\n') f.write(a+'\n') f.close() s.logout()