Python Netmiko是一個(gè)基于Paramiko的多廠商網(wǎng)絡(luò)設(shè)備自動(dòng)化管理庫(kù),支持SSH和Telnet協(xié)議,并能夠支持多種廠商的網(wǎng)絡(luò)設(shè)備,例如Cisco、Juniper、Arista、HP等。
本文將介紹Python Netmiko的基本用法和幾個(gè)示例,包括連接設(shè)備、發(fā)送命令和配置設(shè)備等。
安裝
使用pip安裝Python Netmiko:
pipinstallnetmiko
連接設(shè)備
fromnetmikoimportConnectHandler #設(shè)備連接信息 device={ 'device_type':'cisco_ios', 'ip':'192.168.1.1', 'username':'admin', 'password':'admin', } #連接設(shè)備 conn=ConnectHandler(**device) #斷開(kāi)連接 conn.disconnect()
上述代碼使用了ConnectHandler方法來(lái)連接Cisco IOS設(shè)備。其中,device_type參數(shù)用于指定設(shè)備的類型,ip參數(shù)指定設(shè)備的IP地址,username和password參數(shù)指定連接設(shè)備所需的用戶名和密碼。**device參數(shù)表示將device字典中的所有鍵值對(duì)解包并作為參數(shù)傳遞給ConnectHandler方法。
發(fā)送命令
fromnetmikoimportConnectHandler device={ 'device_type':'cisco_ios', 'ip':'192.168.1.1', 'username':'admin', 'password':'admin', } #連接設(shè)備 conn=ConnectHandler(**device) #發(fā)送命令 output=conn.send_command('showinterfaceGigabitEthernet0/0/0') print(output) #斷開(kāi)連接 conn.disconnect()
在上述代碼中,我們使用send_command方法向設(shè)備發(fā)送命令。該方法返回設(shè)備返回的輸出內(nèi)容,并將其存儲(chǔ)在output變量中。
配置設(shè)備
fromnetmikoimportConnectHandler device={ 'device_type':'cisco_ios', 'ip':'192.168.1.1', 'username':'admin', 'password':'admin', } #連接設(shè)備 conn=ConnectHandler(**device) #配置設(shè)備 config_commands=['interfaceGigabitEthernet0/0/0','ipaddress192.168.1.2255.255.255.0'] output=conn.send_config_set(config_commands) print(output) #保存配置 output=conn.save_config() print(output) #斷開(kāi)連接 conn.disconnect()
在上述代碼中,我們使用send_config_set方法向設(shè)備發(fā)送配置命令。該方法將列表中的命令發(fā)送到設(shè)備,并返回設(shè)備返回的輸出內(nèi)容。然后,我們使用save_config方法保存配置更改。
批量配置
fromnetmikoimportConnectHandler fromgetpassimportgetpass password=getpass() withopen('devices.txt')asf: devices=f.read().splitlines() foripindevices: device={ 'device_type':'cisco_ios', 'ip':ip, 'username':'admin', 'password':password, 'port':22, } ssh=ConnectHandler(**device) config_commands=['interfaceloopback1','ipaddress1.1.1.1255.255.255.255'] output=ssh.send_config_set(config_commands) print(output) ssh.disconnect()
上述代碼展示了如何使用Netmiko連接到多個(gè)設(shè)備,并批量執(zhí)行配置命令。在本例中,從devices.txt文件讀取IP地址,并使用相同的用戶名和密碼連接到設(shè)備。然后,使用send_config_set方法發(fā)送配置命令,并打印輸出。
使用Netmiko子類
fromnetmikoimportConnectHandler fromnetmiko.ciscoimportCiscoIosBase classMyDevice(CiscoIosBase): defbackup_running_config(self): filename=f"{self.host}-running-config.txt" command="showrunning-config" output=self.send_command(command) withopen(filename,'w')asf: f.write(output) device={ 'device_type':'cisco_ios', 'ip':'10.0.0.1', 'username':'admin', 'password':'password', 'port':22, } ssh=MyDevice(**device) ssh.backup_running_config() ssh.disconnect()
上述代碼展示了如何使用Netmiko的子類來(lái)擴(kuò)展其功能。在本例中,創(chuàng)建了一個(gè)名為MyDevice的子類,并添加了一個(gè)備份running-config的方法。然后,使用MyDevice類連接到設(shè)備,調(diào)用backup_running_config方法,并斷開(kāi)連接。
審核編輯:劉清
-
iOS
+關(guān)注
關(guān)注
8文章
3399瀏覽量
151546 -
SSH
+關(guān)注
關(guān)注
0文章
190瀏覽量
16501 -
python
+關(guān)注
關(guān)注
56文章
4813瀏覽量
85301
原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-36-多廠商網(wǎng)絡(luò)設(shè)備自動(dòng)化管理庫(kù)Netmiko
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
bilateralFilter函數(shù)用法示例
python代碼示例之基于Python的日歷api調(diào)用代碼實(shí)例

評(píng)論