Python模塊之netmiko


一、簡介

此模塊用於簡化paramiko與網絡設備之間的ssh連接,可在windows與Unix平台使用

 

二、目前支持的設備

(2019.03.07)

Regularly tested
    Arista vEOS
    Cisco ASA
    Cisco IOS
    Cisco IOS-XE
    Cisco IOS-XR
    Cisco NX-OS
    Cisco SG300
    HP Comware7
    HP ProCurve
    Juniper Junos
    Linux


Limited testing
    Alcatel AOS6/AOS8
    Apresia Systems AEOS
    Calix B6
    Cisco AireOS (Wireless LAN Controllers)
    Dell OS9 (Force10)
    Dell OS10
    Dell PowerConnect
    Extreme ERS (Avaya)
    Extreme VSP (Avaya)
    Extreme VDX (Brocade)
    Extreme MLX/NetIron (Brocade/Foundry)
    Huawei
    IP Infusion OcNOS
    Mellanox
    NetApp cDOT
    OneAccess
    Palo Alto PAN-OS
    Pluribus
    Ruckus ICX/FastIron
    Ubiquiti EdgeSwitch
    Vyatta VyOS



Experimental
    A10
    Accedian
    Aruba
    Ciena SAOS
    Citrix Netscaler
    Cisco Telepresence
    Check Point GAiA
    Coriant
    Dell OS6
    Dell EMC Isilon
    Eltex
    Enterasys
    Extreme EXOS
    Extreme Wing
    Extreme SLX (Brocade)
    F5 TMSH
    F5 Linux
    Fortinet
    MRV Communications OptiSwitch
    Nokia/Alcatel SR-OS
    QuantaMesh
    Rad ETX
View Code

 

三、實驗環境

  1.操作系統:win10

  2.python版本: python3.6.6

  3.netmiko模塊版本:2.3.0

四、安裝netmiko模塊

#前提准備模塊(安裝netmiko可自動下載依賴項):
Paramiko >= 2.4.1
scp >= 0.10.0
pyyaml
pyserial
textfsm

#安裝netmiko
pip install netmiko

ps:沒有全部安裝前提模塊,在使用netmiko沒有報錯,說明運行代碼里沒有調用到而已,而不是不需要

 

五、簡單實例

  5.1 執行查看命令:show ip int brief

from netmiko import ConnectHandler

cisco = {
    'device_type':'cisco_ios',
    'host':'ip地址',
    'username':'用戶名',
    'password':'密碼'
}
net_connect = ConnectHandler(**cisco)
##或者
# net_connect = ConnectHandler(device_type='cisco_ios',host='IP地址',username='用戶名',password='密碼')

#找到目前所在視圖
current_view = net_connect.find_prompt()
print(current_view)
#執行命令,返回結果為字符串,賦值給output output = net_connect.send_command('show ip int brief') print(output) # #此為在windows里如果\n不能顯示回車,則進行如下語句格式化 # o_list = output.split("\n") # for line in o_list: # print(line)

 

  5.2 執行配置命令:手動關閉接口G1/0/29

from netmiko import ConnectHandler

cisco = {
    'device_type':'cisco_ios',
    'host':'ip地址',
    'username':'用戶名',
    'password':'密碼'
}
net_connect = ConnectHandler(**cisco)
##或者
# net_connect = ConnectHandler(device_type='cisco_ios',host='IP地址',username='用戶名',password='密碼')


#要配置的命令
config_commands = ['interface GigabitEthernet1/0/29','shutdown']
#提交要配置的命令,input為提交的真實內容
input = net_connect.send_config_set(config_commands)

#驗證shutdown是否執行成功
output = net_connect.send_command('show run inter gi1/0/29')
print(output)

# #此為在windows里如果\n不能顯示回車,則進行如下語句格式化
# o_list = output.split("\n")
# for line in o_list:
#     print(line)

 

六、常用方法

  • net_connect.send_command()        # 向下發送命令,返回輸出(基於模式)
  • net_connect.send_command_timing() # 沿通道發送命令,返回輸出(基於時序)
  • net_connect.send_config_set() # 將配置命令發送到遠程設備
  • net_connect.send_config_from_file() # 發送從文件加載的配置命令
  • net_connect.save_config() # 將running#config保存到startup#config
  • net_connect.enable() # 輸入啟用模式
  • net_connect.find_prompt() # 返回當前路由器提示符
  • net_connect.commit() # 在Juniper和IOS#XR上執行提交操作
  • net_connect.disconnect() # 關閉連接
  • net_connect.write_channel() # 通道的低級寫入
  • net_connect.read_channel() # 通道的低級寫入

 

七、參考文獻

1.https://pynet.twb-tech.com/blog/automation/netmiko.html

2.https://github.com/ktbyers/netmiko

 


免責聲明!

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



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