Python Netmiko是一個基于Paramiko的多廠商網絡設備自動化管理庫,支持SSH和Telnet協議,并能夠支持多種廠商的網絡設備,例如Cisco、Juniper、Arista、HP等。
本文將介紹Python Netmiko的基本用法和幾個示例,包括連接設備、發送命令和配置設備等。
安裝
使用pip安裝Python Netmiko:
pipinstallnetmiko
連接設備
fromnetmikoimportConnectHandler
#設備連接信息
device={
'device_type':'cisco_ios',
'ip':'192.168.1.1',
'username':'admin',
'password':'admin',
}
#連接設備
conn=ConnectHandler(**device)
#斷開連接
conn.disconnect()
上述代碼使用了ConnectHandler方法來連接Cisco IOS設備。其中,device_type參數用于指定設備的類型,ip參數指定設備的IP地址,username和password參數指定連接設備所需的用戶名和密碼。**device參數表示將device字典中的所有鍵值對解包并作為參數傳遞給ConnectHandler方法。
發送命令
fromnetmikoimportConnectHandler
device={
'device_type':'cisco_ios',
'ip':'192.168.1.1',
'username':'admin',
'password':'admin',
}
#連接設備
conn=ConnectHandler(**device)
#發送命令
output=conn.send_command('showinterfaceGigabitEthernet0/0/0')
print(output)
#斷開連接
conn.disconnect()
在上述代碼中,我們使用send_command方法向設備發送命令。該方法返回設備返回的輸出內容,并將其存儲在output變量中。
配置設備
fromnetmikoimportConnectHandler
device={
'device_type':'cisco_ios',
'ip':'192.168.1.1',
'username':'admin',
'password':'admin',
}
#連接設備
conn=ConnectHandler(**device)
#配置設備
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)
#斷開連接
conn.disconnect()
在上述代碼中,我們使用send_config_set方法向設備發送配置命令。該方法將列表中的命令發送到設備,并返回設備返回的輸出內容。然后,我們使用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連接到多個設備,并批量執行配置命令。在本例中,從devices.txt文件讀取IP地址,并使用相同的用戶名和密碼連接到設備。然后,使用send_config_set方法發送配置命令,并打印輸出。
使用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的子類來擴展其功能。在本例中,創建了一個名為MyDevice的子類,并添加了一個備份running-config的方法。然后,使用MyDevice類連接到設備,調用backup_running_config方法,并斷開連接。
審核編輯:劉清
-
iOS
+關注
關注
8文章
3401瀏覽量
155487 -
SSH
+關注
關注
0文章
200瀏覽量
17720 -
python
+關注
關注
57文章
4876瀏覽量
90025
原文標題:網絡工程師學Python-36-多廠商網絡設備自動化管理庫Netmiko
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
介紹Python Netmiko的基本用法和幾個示例
評論