• python模块之junos-eznc


    一、简介

    本文将使用python模块中的junos-eznc来控制juniper的 Junos OS系统,此模块可以在windows平台和UNIX平台上使用

    二、实验环境

      1.操作系统:win10

      2.python版本: python3.6.6

      3.junos-eznc模块版本:2.2.0

      4.Juniper设备型号:SRX550M

      5.Juniper软件版本:Junos 15.1X49-D30.3

    三、安装junos-eznc模块

    pip install junos-eznc

    四、简单实例

    from pprint import pprint
    from jnpr.junos import Device
    
    host = 'xx.xx.xx.xx'   #JuniperIP地址
    user = 'xxx'     #用户名
    password = 'xxx'    #密码
    with Device(host=host,user=user,password=password) as dev:
        pprint(dev.facts)   #pprint是可以格式化打印,打印内容为设备信息

      部分截图

    五、常见方法介绍

      1. dev = Device(host,user,password,mode,port,console_has_banner=True)   连接对象

    host     #Juniper远程主机地址
    user    #用户名
    password    #密码
    mode    #模式,默认是netconf协议,也可使用telnet,serial
    port      #端口,默认是22,此处用数字或者字符串都行

       Device里的方法:

      1.1 dev.open()

      1.2 dev.facts  设备信息

      1.3 dev.cli('command') 

        模拟在cli执行命令,返回结果,如dev.cli('show interfaces terse ge-0/0/1.0 ') ,查看ge-0/0/1.0接口简洁信息,只支持一个管道符|,如dev.cli(" show configuration | display set | grep route"),显示的结果跟show configuration | display set一样

    六、常见问题

      1.出现jnpr.junos.exception.ConnectTimeoutError

        可能原因:
        1>接口未放行netconf流量
        set security zones security-zone XXXX interfaces ge-0/0/0.0 host-inbound-traffic system-services netconf
        
        2>端口(默认22),ip,用户名或者密码错误

      2.出现jnpr.junos.exception.ConnectRefusedError

        可能原因:
        1>未开启netconf端口服务
        set system services netconf ssh   #开启netconf协议,允许netconf承载在ssh上

    七、案例解析

      7.1  查看路由表

    from jnpr.junos import Device
    from jnpr.junos.op.routes import RouteTable
    from getpass import getpass
    from pprint import pprint
    
    hostIp = input('HostIp:')
    user = input('UserName:')
    passwd = input('Password:') #getpass在pycharm中无法使用,故使用input
    dev = Device(hostIp,user=user,password=passwd)
    dev.open()
    routes = RouteTable(dev)
    routes.get()    #得到总的路由条目
    routes.get('192.168.1.0/24')    #填写网段或者ip/掩码都可以,返回的是被包含在该网段的条目数,即/24可以包含/25,/26...之类的
    routes.get('192.168.1.0/24',protocol='direct')  #获得符合被包含在网段192.168.1.0/24,协议是直连的条目数,一般协议为static,direct,local...
    pprint(routes.keys())   #格式化打印出匹配到的路由名称,返回的是列表的形式
    dev.close()

    八、参考文献

    1.https://www.juniper.net/documentation/en_US/junos-pyez/topics/task/installation/junos-pyez-server-installing.html
  • 相关阅读:
    javascript之数组操作
    python中的类中属性元素加self.和不加self.的区别
    Q查询
    jQuery EasyUI的各历史版本和应用
    了解Entity Framework中事务处理
    C#中Abstract和Virtual的区别
    控制器post参数接收
    存储过程调用存储过程
    表变量、临时表(with as ,create table)
    LINQ TO SQL 实现无限递归查询
  • 原文地址:https://www.cnblogs.com/lisenlin/p/10488349.html
Copyright © 2020-2023  润新知