今天发现一个使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令。
下载后主要有3个文件:
Systems.py 定义了一些不同设备的操作系统及其常见命令。
Connectivity.py 是主要实现功能的代码,其实主要就是使用了python的pexpect模块。
Driver.py是一个示例文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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。作者现在写的可以支持的设备系统有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
OperatingSystems = { 'WebNS' : CiscoWebNS, 'OSX' : AppleOSX, 'SOS' : SecureComputingSidewinder, 'AOS' : ArubaOS, 'OBSD' : OpenBSD, } |
然后填写ip,端口,telnet或者ssh,最后就是上步选择的系统版本。login填上登陆凭证。
s.escalateprivileges是特权凭证。so easy~
以下是我写的一个使用脚本,抓取交换机的一些信息,然后保存到文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[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() |