使用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()