赞
踩
只写了交换机的,路由器、防火墙、负载等其它设备以后,有需求再写,下面以一组交换机为例。
1、收取交换机的信息
需要哪些信息,哪些命令,不同品牌交换机命令不同(本篇以H3C为例),需要提前规划好。交换机的IP、名字、密码等信息,写入数据库比较方便。
2、把需要的信息填入表格
根据关键字提取交换机中的状态信息,并一次填入设计好的表格中,难点是字符串的截取和excel表格的设计。同款交换机相同的命令,可能用同一个关键字,抓取的信息也不一样,这个要多试几次。
3、编写邮件,发送邮件。
4、linux编写任务计划,crontab定期执行python代码,定期发送邮件。
抓取交换机需要的配置信息
- import pexpect
- import sys
- import datetime
- import pymssql
- import os
-
- today=datetime.date.today().strftime('%Y%m%d')
- path = "/root/xunjian/"+today
- os.mkdir(path,777)#创建目录
-
- def Switch(name,ip,passwd):
- try:#try except 防止有一个命令错误,导致程序不能进行,其实不加也可以,如果有命令没输出,下一个代码也会报错。
- name1="---- More ----"#模拟交换机出现的翻页提示
- child=pexpect.spawn('telnet %s'%ip)
- fout=open('/root/xunjian/'+today+'/'+'%s-%s.txt'%(name,ip),'wb+')
- child.logfile = fout
- child.expect('login:')#提示用户登录,输入帐号,交换机不同,有所不同。
- child.sendline("admin")
- child.expect('(?i)ssword:')#提示输入密码
- child.sendline("%s"%passwd)
- child.expect('<%s>'%name)
- child.sendline("display cpu-usage")#查看cpu状态
- child.expect('<%s>'%name)
- child.sendline("display memory")#查看内存状态
- child.expect('<%s>'%name)
- child.sendline("display environment")#运行温度
- child.expect('<%s>'%name)
- child.sendline("display fan")#风扇状态,一般输出都有2个
- child.expect('<%s>'%name)
- child.sendline("display power")#电源状态
- child.expect('<%s>'%name)
- child.sendline("display ip routing-table")#路由表
- for i in range(10):
- index = child.expect([name1,'<%s>'%name])
- if ( index == 0 ):
- child.send(" ")
- else:
- child.sendline("display interface brief")#端口状态
- break
- for i in range(10):
- index = child.expect([name1,'<%s>'%name])
- if ( index == 0 ):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。