Python 交換機自動化巡檢筆記


python-交換機巡檢自動化

​ 因為了解到python可以實現自動化的巡檢功能,所以開始學習了《Python編程 從入門到實踐》。通過一段時間的學習,將這本書的前11章看完,並開始搜索交換機巡檢的相關模板,發現別人寫的代碼完全看不懂,很多模塊,根本看不懂。經過一段時間的研究,要巡檢,得學會以下幾個模塊:time、os、Netmiko、xlwt、re。

我從開始學習到能ctrl+v出自己想要的腳本的過程如下:

《Python編程 從入門到實踐》——百度大神的腳本——了解大神腳本中模塊的功能——根據需求自己寫腳本

接下來我們開始了解編寫腳本所需要了解的模塊吧

time模塊——生成時間相關

import time
>>> res = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
>>> print(res)
2021-04-15 18:53:20

>>> res = time.strftime("%Y%m%d",time.localtime())
>>> print(res)
20210415

os模塊的使用——創建目錄

因為open模塊只能創建文件,目錄需要os模塊來創建

import os
if not os.path.isdir("machine_learning"): 	#判定如何沒有這個目錄,就創建
    os.makedirs("machine_learning")			#創建

Netmiko-SSH巡檢

通過ssh,巡檢h3c的交換機。關鍵模塊是ConnectHandler。

#!/usr/bin/python3
#H3c交換機
from netmiko import ConnectHandler

'''定義交換機,包括類型,密碼,ip,主機名'''
ip_list = [
    ['交換機的sysname','交換機的管理地址'],
]

#這里定義了ssh要用到的參數
SW = {
    'device_type':'hp_comware',     #設備類型是netmiko預定義好的,現在用hp_comware是h3c的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx"
}
'''--------定義結束-----------'''

'''-------交換機交互-----------'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = ConnectHandler(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    output = connect.send_command('system view')
    iproute = connect.send_command("display ip routing-table")
    print(output) 				#驗證
    print(iproute) 				#驗證
'''交換結束'''

Netmiko-telnet巡檢

telnet與ssh的區別應該就在於,device_type中尾部添加_telnet,用的是Netmiko,而ssh用的是ConnectHandler。

我們的telnet分為h3c和cisco,因為telnet有個enable模式

H3C

from netmiko import Netmiko

'''定義交換機,包括類型,密碼,ip,主機名'''
ip_list = [
    ['交換機的sysname','交換機的ip地址'],   #定義設備的用戶名和管理地址
]
SW = {
    'device_type':'hp_comware_telnet',					#設備類型是netmiko預定義好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",	
}
'''完成定義'''

'''與交換機交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('dis cur')
    fan = connect.send_command('dis fan')
    print(config) 	#驗證一下值是不是想要的
    print(fan) 		#驗證一下值是不是想要的

cisco

主要的不同是,cisco的telnet是需要enable的。

from netmiko import Netmiko

'''定義交換機,包括類型,密碼,ip,主機名'''
ip_list = [
    ['交換機的hostname','交換機的ip'],   #定義設備的用戶名和管理地址
]
SW = {
    'device_type':'hp_comware_telnet',	#設備類型是netmiko預定義好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",	#telnet的密碼
    'secret':'xxxxx',		#enable的密碼
}
'''完成定義'''

'''與交換機交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    connect.enable()									#注意這個地方!cisco是這樣enable的
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('shun run')
    cpu = connect.send_command('sh process cpu')
    print(config) 	#驗證一下值是不是想要的
    print(fan) 		#驗證一下值是不是想要的

xlwt模塊-創建excel

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('巡檢報告第一次') #創建worksheet
worksheet.write(0,0,label = '設備名稱')		#對A1添加內容
worksheet.write(0,1,label = '屬性')		#對B1添加內容
worksheet.write(0,2,'值')			#對C2添加內容
workbook.save('學習筆記.xls')			#保存到excel,如果沒有會創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM