1. 程式人生 > 其它 >python指令碼:使用Netmiko,在交換機上通過MAC查IP或者通過IP查MAC

python指令碼:使用Netmiko,在交換機上通過MAC查IP或者通過IP查MAC

 1 import sys
 2 from netmiko import ConnectHandler
 3 
 4 try:                                    #判斷有沒有MAC地址通過變數傳遞進來
 5    mac=sys.argv[1]
 6 except BaseException:
 7    mac=input("輸入mac:(支援格式:IP、123456789abc、12-34-56-78-9a-bc、1234-5678-9abc)\n")                 #沒有變數傳遞進來就自己輸mac地址
 8 
 9 if("." in
mac): #判斷格式 是否為IP地址 10 mac2=mac 11 elif("-" not in mac): #判斷格式 123456789abc 12 mac1=mac[0:4]+"-"+mac[4:8]+"-"+mac[8:] 13 mac2 = str(mac1).lower() 14 elif mac.startswith('-', 2, 3): #判斷格式 12-34-56-78-9a-bc
15 mac1=mac[0:2]+mac[3:6]+mac[6:8]+mac[9:13]+mac[13:14]+mac[15:] 16 mac2 = str(mac1).lower() 17 else: #判斷格式 其它 18 mac2 = str(mac).lower() 19 20 command='display arp | include '+mac2 #組合查詢命令 21 huawei = { 22 'device_type':'
huawei', 23 'host':'1.1.1.1', #交換機ip 24 'username':'123', #ssh賬號 25 'password':'345' #ssh密碼 26 } 27 28 ssh_connect = ConnectHandler(**huawei) #建立ssh連線 29 #Python中,(*)會把接收到的引數形成一個元組,而(**)則會把接收到的引數存入一個字典 30 #等同於: 31 #net_connect = ConnectHandler(device_type='huawei',host='IP地址',username='使用者名稱',password='密碼') 32 33 current_view = ssh_connect.find_prompt() #找到目前所在檢視 34 print(current_view) 35 output = ssh_connect.send_command(command) #執行命令,返回結果為字串,賦值給output 36 print(output) 37 ssh_connect. disconnect() #關閉ssh
***********記得安裝netmiko模組(cmd下執行):pip install netmiko

"""
Netmiko常用方法介紹
a.send_command_timing()
基於延遲機制執行command命令, 常用於查詢場景, 與send_command()方法不同之處在於該方法時在迴圈次數達到最大值自動退出, 而send_command()方法則必須匹配到指定的退出標識, 否則丟擲異常。

b.send_config_set()
該方法可以同時執行多條命令, 同時會把執行的過程進行返回,一般會用在配置下發場景,該方法會自動進入裝置配置模式不需要額外傳入進入配置模式的命令。

c.send_config_from_file()
該方法可以從檔案中載入配置命令進行配置下發

d.write_channel()
該方法是將命令字串寫入SSH會話通道中

e.read_channel()
該方法是從SSH會話通道中讀取裝置的響應資料

f.disconnect()
該方法是關閉SSH會話
"""