zoukankan      html  css  js  c++  java
  • Ansible用于网络设备管理 part 4 使用NAPALM成品库+Gabriele的方法+循环

    上次用NAPALM实现了一个给端口加description的小功能,但是那次仅仅是用于给一个设备的一个端口加description,没有实现一次给多个设备加,也没有实现一个给多个端口加(虽然这次也没实现,但是快了)。

    今天只讨论IOS,古老的IOS。

    循环的功能是通过bash自带实现的,其实也可以通过Python,只是我的Python太渣,并没有通过Ansible实现,是因为我现在还不太会用hosts,所以用的bash。添加配置的功能是通过NAPALM实现的。那么其实呢,通过NAPALM实现添加“配置文件”(配置片段 configuration snippet)到IOS上去是有两种方法的。第一种是像Gabriele的博客里写的那样,第二种是像Kirk的博客里写的那样

    我目前用的第一种方法。然而我发现执行速度很低,可想而知,bash做循环,Python调用NAPALM功能,NAPALM里的netmiko再去连接真实设备。我先把第一种方法记下来好了,下一篇再写第二种方法,如下:

    下面是Python文件,在写这个Python文件之前的准备工作在上一篇里有完整的描述。

    __author__ = 'harry'
    from netmiko import ConnectHandler
    from napalm import get_network_driver
    from sys import argv
    
    script, hostname = argv
    
    get_network_driver('ios')
    driver= get_network_driver('ios')
    
    print "dealing with %s" % hostname
    
    device = driver(hostname,'mark1','mark1's_plaintext_password')
    device.open()
    device.load_merge_candidate(filename='/Users/harry/PycharmProjects/BulkTest/new_user_adding.conf')
    device.compare_config()
    output
    = device.compare_config() print output device.commit_config() device.close()

    其实内容跟上一篇在Python的>>>界面里的东西差不多完全一样,不过这次就是传递了一个主机名从外头到这个Python script,所以执行起来如下

    在我的Mac OS X的Shell里,在这个文件夹目录下,执行python BulkTest.py machine-name.whatever.com, 这样就会把这个主机名传递到Python script里的hostname变量上去,很简单的Python语法(learn python the hard way 中的某一课有讲解)

    为了多次执行这个Python script我在bash里加了个循环,以多次执行这个命令,这个bash如下(为啥执行速度快不起来,能快起来就怪了)

    #!/bin/bash
    more core_switches | while read line;
    do      
            python BulkTest.py $line
    done

    这个 core_switches 就是一个普通的文件,里面存放一堆hostname,每个hostname占一行,也就是中间用回车割开,这样more它的时候,出来容易被read,read是bash自带功能。read的东西放到while循环里,然后循环的功能就做好了,下面执行这个bash就是了。

    我记得不是很清楚了,似乎需要给这个bash的权限改成755,它才能在 ./+tab的时候出现,也就是作为一个可执行的bash命令,我没试过sudo会不会ok,可能会是可行的。

  • 相关阅读:
    alias 命令
    iptables 命令
    unzip 命令
    gzip 命令
    zip 命令
    tar 命令
    nslookup 命令
    dig 命令
    java 线程池
    java 线程
  • 原文地址:https://www.cnblogs.com/Vooom/p/5487722.html
Copyright © 2011-2022 走看看