pyhton对网络设备的日常巡检
利用python对网络设备的日常巡检,主要是防火墙,交换机,负载均衡。方式是用Telnet,或者SSH2。SSH1呢还在研究当中。
首先说下使用Telnet。可以使用pyhton的telnetlib模块(这个模块是自带的,只需要定义import telnetlib就可以了)。Telnet的方式比较简单,主要是针对交换机,核心思想就是通过账号密码telnet交换机,然后输入命令,取返回值,再提取需要的数据,最后做表。根据不同的设备,写不同的脚本,最后整合一下。(当然第一次整合特别繁琐,虽然我们机房都是华为的交换机,但是型号不同,板卡数量不同,命令和返回值都截然不同,需要更多的耐心和时间)
命令如下:
tn = telnetlib.Telnet(ip, port = 23, timeout = 10) tn.set_debuglevel(2) tn.read_until('Username:') tn.write(username + '\n') tn.read_until('Password:') tn.write(password1 + '\n') #行进登录操作,账号密码 tn.read_until('>') #当读取返回值为‘>’时输入命令,>即用户模式 tn.write(‘命令’) log_file = open(txt, "w+") #打开创建好的TXT,把取到的返回值存入TXT tn.write('qquit'+'\n') ret = tn.read_until('uit') log_file.write(ret) log_file.flush() log_file.close() tn.close() s = linecache.getline(txt,33)#打开TXT,找到需要的数据并输入到excel表中, val=s.split() #就从哪一行,第几列去值,当然可以利用val[][]的字符串 t = val[-1] #技巧 ws_newWb.write(i, 4, t);#内存 s = linecache.getline(txt,39) val=s.split() t = val[-3] ws_newWb.write(i, 3, t);#CPU s = linecache.getline(txt,21) val=s.split() t = val[-1] ws_newWb.write(i, 6, t);#温度 linecache.clearcache()
然后就是SSH了,主要是用于防火墙和负载均衡 一般来说SSH2通过 paramiko这个模块来实现SSH2登录,这个模块不是自带的安装有几个步骤, 第一,安装python的VCForPython27.msi(这个是针对用window跑脚本才需要的) 第二,安装pycrypto-2.6.win-amd64-py2.7 第三,安装paramiko 安装模块也是比较麻烦的,最好使用easy_install 来安装很方便(具体操作呢,度娘)
ssh = paramiko.Transport(ip,22) ssh.connect(username=“用户名”, password=“密码”) chan=ssh.open_session() chan.settimeout(60) chan.get_pty() chan.invoke_shell() log_file=open(txt,'w+') time.sleep(1) chan.send('命令') time.sleep(1) log_file.write(chan.recv(65535)) log_file.flush() log_file.close() ssh.close()
因为使用ssh登录呢,在你输入值以后不会像Telnet那样直接给你返回值,你需要通过chan.recv
的方式来取,其中需要停顿,不然会导致输入错误,所以我加入了time.sleep(当然time模块也是需要定义的)
取值的方法更Telnet的方法一样,就不在重复说了
还有一点就是通过python对excel的操作,我把设备的账号密码保存在excel表中,然后读取的。读取到的值是带有格式的,需要对其进行字符转换,也就是加一个str()即可。
总的来说,技术含量不高,主要是需要耐心。菜鸟第一次写类似的文档,表述能力还需要提高,谢谢大家
本文出自 “bacon Q” 博客,谢绝转载!