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,如果沒有會創建。