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,可能会是可行的。

时间: 2024-08-30 03:43:53

Ansible用于网络设备管理 part 4 使用NAPALM成品库+Gabriele的方法+循环的相关文章

Ansible用于网络设备管理 part 2 对Jinja2 YAML 和 module的理解

虽然很不想用“应该”这个词,但是还是写上了,的确我自己目前就是这么理解的. 那么这个理解就是,Ansible的一个key point 就是总的一个playbook是去依赖很多元素的,就像一开始那个图里画的,如下图 这里面就涉及到它下挂的不管是yml文件还是Jinja2文件,这些文件的内部一定是和Ansible这个东西相紧密关联的,我之前之所以不那么理解就是在于这一点没有弄清楚,再说明白一点就是下面的内容 看到task:下面的东西了么?name, yum, service,还有在Jinja2文件(

Ansible用于网络设备管理 part 0 安装和登录网络设备

真尼玛累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-tool-in-linux/ http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ 基本就靠这俩就搞定了 登录网络设备让我比较费劲,因为之前不了解公钥私钥加密(说实话是别人讲了,没理解,这次终于理解了,改天得专门写

此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。

FirFox打开80以外的端口,会弹出以下提示: "此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.".经网上搜索,解决方法如下: 在Firefox地址栏输入about:config,然后在右键新建一个字符串键network.security.ports.banned.override,将需访问网站的端口号添加到,值就是那个端口号即可. 如有多个,就半角逗号隔开,例:81,88,98 在能保证安全的前提下,还简化成这样写0-65535.这样,就可

火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法

关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器,在地址烂输入“about:config” 2.然后在“首选项名称”的下方单击右键,选择“新建”>“字符串”,在弹出框输入“network.security.ports.banned.override”,单击“确定” 3.然后再在弹出的“输入字符串的值”对话框中输入IIS部署网站设置的端口,如:103

完美解决:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求

原文来自:http://smaij.com/%E7%AB%AF%E5%8F%A3%E5%87%BA%E4%BA%8E%E5%AE%89%E5%85%A8%E5%8E%9F%E5%9B%A0firefox-%E5%8F%96%E6%B6%88%E8%AF%B7%E6%B1%82-%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/ 在使用Firefox 访问一些自定义端口时.往往出于安全的考虑,Firefox 会禁止想该端口请求数据.此时浏览器会提出 此地址使用了一个通常用于

WinPcap是用于网络封包抓取的一套工具

WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面. Winpcap是一个免费公开的软件系统.它用于windows系统下的直接的网络编程. 大多数网络应用程序访问网络是通过广泛使用的套接字.这种方法很容易实现网络数据传输,因为操作系统负责底层的细节(比如协议栈,数据流组装等)以及提供了类似于文件读写的函数接口. 但是有时,简单的方法是不够的.因为一些应用程序需要一个

火狐----此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。

FirFox打开80以外的端口,会弹出以下提示: “此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.”.经网上搜索,解决方法如下: 在Firefox地址栏输入about:config,然后在右键新建一个字符串键network.security.ports.banned.override,将需访问网站的端口号添加到,值就是那个端口号即可.如有多个,就半角逗号隔开,例:81,88,98 在能保证安全的前提下,还简化成这样写0-65535.这样,就可以浏览任意端

HTTP代理IP用于网络营销效果怎么样

HTTP代理IP用于网络营销效果怎么样?我们平时在访问网站,查看或进行业务的时候,基本都会被提示要先注册登录,但一个ip地址基本只能注册一个帐号.如果是每天都有大量注册业务需求的网友来说,就需要大量的HTTP代理IP来帮助.当然,如果我们手动对路由器进行从起也会使ip地址发生变化,但这样操作会消耗很大的时间和精力.HTTP代理IP的出现就解决了这一方面的难题. 我们现在处于网络信息化发展很快的时代,闪云代理IP给从事网络效果补量的业务人员带来了很大的便利,每天都会有海量的HTTP代理IP资源,I

windows使用libvlc进行网络串流遇到的一些问题及解决方法

先贴代码, #define WIFI_W 640#define WIFI_H 480 struct ctx { uchar* frame; }; class CConnectWIFI { public: CConnectWIFI(void); void Init(HWND hWnd); libvlc_instance_t* m_vlcInst; libvlc_media_player_t* m_vlcMplay; libvlc_media_t* m_vlcMedia; struct ctx co