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,可能会是可行的。
Ansible用于网络设备管理 part 4 使用NAPALM成品库+Gabriele的方法+循环的更多相关文章
- Ansible用于网络设备管理 part 3 使用NAPALM成品库
闲话 经过了这俩月的闲暇时间的瞎逛和瞎琢磨,我发现NAPALM是一条路,NAPALM是由帅哥David Barroso和美女Elisa Jasinska创建的一个项目,都是颜值高的技术牛人啊,真是不给 ...
- Ansible用于网络设备管理 part 1 Jinja2 YAML初窥
这一次的实验内容依然来自Kirk Byers的博客,源地址在https://pynet.twb-tech.com/blog/python/paramiko-ssh-part1.html 但是,这次实验 ...
- Ansible用于网络设备管理 part 2 对Jinja2 YAML 和 module的理解
虽然很不想用“应该”这个词,但是还是写上了,的确我自己目前就是这么理解的. 那么这个理解就是,Ansible的一个key point 就是总的一个playbook是去依赖很多元素的,就像一开始那个图里 ...
- Ansible用于网络设备管理 part 0 安装和登录网络设备
真实在是累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-too ...
- 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求
FirFox打开80以外的端口,会弹出以下提示: “此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.”. 解决方法如下: 在Firefox地址栏输入about: ...
- 火狐----此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。
FirFox打开80以外的端口,会弹出以下提示: “此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.”.经网上搜索,解决方法如下: 在Firefox地址栏输入a ...
- Linux-TFTP之用于网络远程安装
TFTP:Trival File Transfer Protocol,简单文件传输协议.是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务. ...
- 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法
关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器, ...
- 此地址使用了一个通常用于网络浏览以外目的的端口。出于安全原因,Firefox 取消了该请求。
火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法 关于火狐浏览器访问本机IIS部署的网站弹出"此 ...
随机推荐
- linux-redis
1.下载 6.启动 ./redis-server ../conf/redis.conf 7.测试 ./redis-cli -p 7030 set str "hello" ./red ...
- 2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> ...
- java向mysql数据库插入数据显示乱码的问题
在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码”???“的问题.针对该问题的主要解决办法就是: 一.确保是否添加了字符集过滤器: 在java web工程中的web.xm ...
- Spring MVC 学习总结(一)——MVC概要与环境配置
一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...
- 一种利用 Cumulative Penalty 训练 L1 正则 Log-linear 模型的随机梯度下降法
Log-Linear 模型(也叫做最大熵模型)是 NLP 领域中使用最为广泛的模型之一,其训练常采用最大似然准则,且为防止过拟合,往往在目标函数中加入(可以产生稀疏性的) L1 正则.但对于这种带 L ...
- [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP
<Windows Azure Platform 系列文章目录> 在开始本章内容之前,请读者熟悉以下2篇博文: [New Portal]Windows Azure Virtual ...
- [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS
<Windows Azure Platform 系列文章目录> 注意:如果使用Azure Virtual Machine,虚拟机所在的存储账号建议使用Local Redundant.不建议 ...
- 地图定位IOS8.0之前的定位
在ios8.0之前定位的步骤如下: 1.首先将我们的项目版本切换到7.0
- angularJs案例汇总
---恢复内容开始--- 这里我会把学习过程中碰到的demo与大家分享,由浅入深,逐个分析. Eg1:入门必备 <html ng-app="todoApp"> < ...
- JAVA - IDEA快捷键(精简版)
快捷键 功能 Ctrl + Alt + V 对应eclipse ctrl + l + 2 自动补全 Ctrl + Alt + L 对应eclipse ctrl + shift + o 代码格式化 Ct ...