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()即可。
總的來說,技術含量不高,主要是需要耐心。菜鳥第一次寫類似的文檔,表述能力還需要提高,謝謝大家