netconf python_python web

netconf python_python web什么是 Netmiko 是一个基于 paramiko 二次封装的,可以通过 SSH 连接多种网络设备的库,从 3.0 版本以来,加入了对国内厂商的支持,是非常不错的网络自动化工具。 目前支持设备几乎覆

什么是 Netmiko

是一个基于 paramiko 二次封装的,可以通过 SSH 连接多种网络设备的库,从 3.0 版本以来,加入了对国内厂商的支持,是非常不错的网络自动化工具。

目前支持设备几乎覆盖了市面上大部分设备,包括锐捷、华三、华为、思科、f5 等等,具体的列表见后文。

如何使用

安装

首先需要具备Python3.6以上版本的环境,使用pip可以直接安装。 国内下载速度很慢,可以参考 # Python 为 pip 加速:设置国内 pypi 源 进行配置。

# 安装
pip install netmiko

出现 Successfully installed netmiko 即为安装成功。

使用

实验环境:Windows 10, Python 3.8 ,HCL 2.1.2

image.png

基本使用方法

# 首先导入处理连接
from netmiko import ConnectHandler as ch

# 通过字典方式定义设备登录信息
host = {
    'device_type': 'hp_comware',
    'host': '192.168.56.20',
    'username': 'netdevops',
    'password': 'netdevops',
    'port': 22,
    'secret': '', # enable密码,没有可以不写这行
}
# 连接设备,conn 可以理解为一个已经连接到设备上的终端,此时可以直接执行命令
conn = ch(**host)
# 通过 send_command 方法执行命令,查看接口信息,返回值是字符串
output = conn.send_command('display ip int brief')
print(output)

以下为输出信息,可以看到已经从设备上采集到了需要的信息

image.png

执行多条命令

from netmiko import ConnectHandler as ch
# 通过字典方式定义设备登录信息
host = {
    'device_type': 'hp_comware',
    'host': '192.168.56.20',
    'username': 'netdevops',
    'password': 'netdevops',
    'port': 22,
    'secret': '', # enable密码,没有可以不写这行
}
# 连接设备
conn = ch(**host)
# 定义一个命令列表,比如为G0/1配置一个IP地址
commands = ['int g0/1', 'ip add 1.1.1.1 30', 'desc netmiko_config']
# 这个时候可以使用 send_config_set 方法执行多条命令
output = conn.send_config_set(commands)
print(output)

以下为执行后的结果

image.png

设备上已经配置完成。

image.png

登录设备后发生了什么?

Netmiko 可以通过 SSH 配置网络设备,那么它登录到设备之后,做了什么动作呢? 我们可以从网络设备的 LOG 中看到相关信息,以下为本次实验中的一些 LOG:

image.png

def send_command():

从 LOG 的第二部分可以看到,当执行 send_command 方法时,netmiko 先输入了取消分屏的命令 screen-length disable ,在进行了对应的命令,这样在有大量输出时,可以保证输出内容是完整的。

其实不仅是华三设备,Netmiko 对其他设备如思科、华为等都做了适配,登录设备之后,都会先执行对应的取消分屏的命令。

所以,这里可以总结一个注意点,即: 设备登录使用的用户名需要有执行取消分屏命令的权限(比如 level 0 用户可能无该命令,则无法收集信息)。

def send_config_set():

从 LOG 的第一部分可以看到,当执行send_config_set 方法时,Netmiko 不但输入了取消分屏的命令,还执行了system-view进入了系统视图下,之后才执行了我们输入的命令。

从这个方法的名字 send_config_set 可以看出,Netmiko 认为此时输入的是一系列配置命令,所以直接帮我们进入了系统视图下。

对比其他设备如 Cisco,Netmiko 则会帮我们执行 config terminal 进入配置模式,此时,对于思科设备的 show 命令,则不能批量执行(思科在配置模式下得用 do show 才可以)。

当命令执行完成,Netmiko 帮我们退出了系统视图,之后中断了 SSH 连接。

这里第二个注意点: 使用 send_config_set 方法时,需要用户具有配置权限。这个方法通常用来配置刷入。


支持的设备列表

a10
accedian
alcatel_aos
alcatel_sros
apresia_aeos
arista_eos
aruba_os
avaya_ers
avaya_vsp
brocade_fastiron
brocade_netiron
brocade_nos
brocade_vdx
brocade_vyos
calix_b6
checkpoint_gaia
ciena_saos
cisco_asa
cisco_ios
cisco_nxos
cisco_s300
cisco_tp
cisco_wlc
cisco_xe
cisco_xr
cloudgenix_ion
coriant
dell_dnos9
dell_force10
dell_isilon
dell_os10
dell_os6
dell_os9
dell_powerconnect
dlink_ds
eltex
eltex_esr
endace
enterasys
extreme
extreme_ers
extreme_exos
extreme_netiron
extreme_nos
extreme_slx
extreme_vdx
extreme_vsp
extreme_wing
f5_linux
f5_ltm
f5_tmsh
flexvnf
fortinet
generic_termserver
hp_comware
hp_procurve
huawei
huawei_olt
huawei_smartax
huawei_vrpv8
ipinfusion_ocnos
juniper
juniper_junos
juniper_screenos
keymile
keymile_nos
linux
mellanox
mellanox_mlnxos
mikrotik_routeros
mikrotik_switchos
mrv_lx
mrv_optiswitch
netapp_cdot
netscaler
nokia_sros
oneaccess_oneos
ovs_linux
paloalto_panos
pluribus
quanta_mesh
rad_etx
ruckus_fastiron
ruijie_os
sophos_sfos
ubiquiti_edge
ubiquiti_edgeswitch
ubiquiti_unifiswitch
vyatta_vyos
vyos
watchguard_fireware

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12899.html

(0)

相关推荐

  • Java的非法反射警告illegal reflective access operation「终于解决」

    Java的非法反射警告illegal reflective access operation「终于解决」
    反射是一项相当强大的特性,不仅在各类框架中被广泛应用,即使是在日常开发中我们也隔三差五得要和它打交道。然而在JDK9中JDK对反射加上了一些限制,需要注意。…

    2023-04-05
    168
  • Python模块:Numpy计算数组

    Python模块:Numpy计算数组Numpy是Python中功能强大的库之一,它为Python提供了一种更高效的方法来处理大型数​​组和矩阵。Numpy使得Python变得更接近于一种与MATLAB和R等科学计算语言相似的语言,使其在科学计算和数据分析方面更有竞争力。它具有广泛的功能和易于使用的API,允许开发人员更快地进行数值计算。

    2024-03-06
    90
  • hadoop格式化namenode报错_no lease on hdfs文件不存在

    hadoop格式化namenode报错_no lease on hdfs文件不存在删除hdfs ha namenode的正常方式是先禁用高可用,今天想试试直接删除其中一个namenode,于是开始操作,结果剩下的NN无法启动。 cm页面报错:“Nameservice testClu

    2023-02-02
    156
  • 认证 鉴权 区别_微服务认证与鉴权

    认证 鉴权 区别_微服务认证与鉴权引言: 本文系《认证鉴权与API权限控制在微服务架构中的设计与实现》系列的完结篇,前面三篇已经将认证鉴权与API权限控制的流程和主要细节讲解完。本文比较长,对这个系列进行收尾,主要内容包括对授权和鉴权流程之外的endpoint以及Spring Security过滤器部分踩坑的经…

    2023-08-20
    123
  • scripting.filesystemobject(script文件)

    scripting.filesystemobject(script文件)

    2023-09-20
    145
  • 通过 javax.mail 实现系统异常自动告警[亲测有效]

    通过 javax.mail 实现系统异常自动告警[亲测有效]事情的起因:笔者在服务器中运行的 OLAP 程序有时会因意外的错误而 “悄悄” 地宕机。更糟糕的是,系统在宕机时没有任何机制提醒笔者上线进行故障排除,这导致积压在消息队列的 msg 迟迟得不到处理。为

    2023-07-24
    125
  • dnf强化bug(dnf仇恨bug丢伤害)

    dnf强化bug(dnf仇恨bug丢伤害)

    2023-10-02
    164
  • 启动Jupyter教程

    启动Jupyter教程Jupyter是一种交互式编程环境,能够支持多种编程语言。它通过网页浏览器的形式为用户提供了一个可交互、可编写和可共享的计算环境,同时还提供了数据可视化和文档编写等功能。Jupyter最初由Fernando Pérez教授和Brian Granger教授在2014年开发并开源,旨在提供一个易于操作的、可拓展性强的计算环境。

    2024-08-27
    23

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注