基于pexpect的网络自动化配置

本篇是基于pexpect的网络自动化配置的总结帖,目前需要实现的功能均已良好实现,期间遇到多个困难,在此进行复盘。


第一个问题,for 循环取出ip列表, ip.txt里基于回车作分割,里面存放了所有网络设备的ip地址, 如何用for循环逐个取出,并且做ssh登录。

在解决了第一个问题后,开始做配置备份脚本,本质理论就是用child.logfile做日志记录输出,通过pexpecet  把dis cu ,show run ,等命令 ,打到网络设备上去。有好多种网络配置备份的方法,本人认为还是pexpect最好,原因如下:

1:pexpect灵活 ,只要网络设备能支持telnet ssh登录,即可进行配置抓取,不需要其它模块支持,比如偏门的神码设备,或中兴设备,或型号较为老旧的设备,只要支持telnet ssh即可。

2: pexpect 安全性高, 把命令打到设备上去,打错了,问题也不大, 比如dis cu  ,误打成了  diss cuu, 网络设备不识别这条命令,只会报错忽略, 虽然命令执行出错,但不会出乱子。例外是把router ospf , 打成了 no router ospf . 这种错误是不行的。

3:pexpect的备份基于命令输出记录日志,那同样可以做设备配置。经多次大坑后总结, pexpect在sendline之后, 不一定总是要做 pexpect expect ,只要加下time.sleep.,让命令稍后再打即可, 前提是要求网工算好每条命令在Sendline后的输出反馈时间。

4: 基于pexpect的配置备份要求设备配置支持terminal length 0之类的命令,目前备份过的设备均有类似命令,因为如果没有类似命令,在输出后会提示类似    more   , 则无法记录输出记录日志和配置。

因此最初基于上面完成了全网网络设备的配置,通过httpd  + fotiguard firewall+ crontal做了一套配置自动备份平台。

后来又发现一个问题,二层的交换机有时候会down掉,不通。当在ip.txt列表文件中的某个交换机不通后,pexpect登录交换机就会timeout,脚本就会报错退出,导致后续交换机全部备份失败。

后来为了解决这个问题, 加了一个if 判断, 取出pexpect登录交换机的返回值 ,当index的值为eof 或timeout也就是报错时, pass掉,忽略这个错误,继续执行后续的代码,避免了因为某个交换机下线不通,导致代码报错退出,后续设备无法备份的情况出现,所以在这里其实用continue更合适, 

continue会不再执行后续的代码, 重新返回到for循环。

脚本大概类似于下面这样:

脚本

脚本做到这一步, 依然还面临这两个重大问题:

1: 不支持多线程, 100多交换机需要半个多小时才能备份完配置。

2:交换机的命令是用Sendline的方式一条一条打进去的, 没有做到模块化。

第二个问题需要尽快解决,因为公司日本公司会有20几台cisco交换机要配置, 供应商会配置好管理地址, 脚本里给每台交换机用Sendline改改改,或者每台交换机再登录, 都会很麻烦。

为了解决第二个问题, 脚本调用两个文件, 一个是ip.txt ,一个是command.txt , 前者用于存放交换机的ip地址,后者用于存放交换机的配置命令。


ip.txt



command.txt




脚本





做到这一步, 只剩下多线程了,脚本如下:




script1



script2
script3


大量配置命令需要发送到网络设备的话, 需要考虑到 time.sleep()时间。


=================

20190826更新

在飞塔上遇到了一个坑,因为forti的输出特别快,但没考虑到输出特别长,导致show的输出被截断, 刚好断在有 关键字 console的部分, 以为这个输出就完整了。

考虑到forti支持通过ftp备份,因为用vsftpd搭建了一个Ftp服务器, 每个ftp用户都单独新建了家目录,然后forti全部备份到ftp上。 

之所以需要为每台设备新建用户, 是因为在forti上执行ftp 备份没有办法变更路径。


bk


waf  在web上可以直接指定配置Ftp 备份,奇怪的是命令行没有ftp备份方式,只有tftp备份。

之所以重新变更了配置备份,是因为坑爹的2台1500D , 4个电源模块全挂了。






最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351