pyhton對網絡設備的日常巡檢

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()即可。

總的來說,技術含量不高,主要是需要耐心。菜鳥第一次寫類似的文檔,表述能力還需要提高,謝謝大家

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章