基于pexpect的網(wǎng)絡(luò)自動(dòng)化配置

本篇是基于pexpect的網(wǎng)絡(luò)自動(dòng)化配置的總結(jié)帖减响,目前需要實(shí)現(xiàn)的功能均已良好實(shí)現(xiàn),期間遇到多個(gè)困難龟糕,在此進(jìn)行復(fù)盤。


第一個(gè)問題悔耘,for 循環(huán)取出ip列表讲岁, ip.txt里基于回車作分割,里面存放了所有網(wǎng)絡(luò)設(shè)備的ip地址衬以, 如何用for循環(huán)逐個(gè)取出催首,并且做ssh登錄。

在解決了第一個(gè)問題后泄鹏,開始做配置備份腳本,本質(zhì)理論就是用child.logfile做日志記錄輸出秧耗,通過pexpecet? 把dis cu ,show run ,等命令 备籽,打到網(wǎng)絡(luò)設(shè)備上去。有好多種網(wǎng)絡(luò)配置備份的方法分井,本人認(rèn)為還是pexpect最好车猬,原因如下:

1:pexpect靈活 ,只要網(wǎng)絡(luò)設(shè)備能支持telnet ssh登錄尺锚,即可進(jìn)行配置抓取珠闰,不需要其它模塊支持,比如偏門的神碼設(shè)備瘫辩,或中興設(shè)備伏嗜,或型號(hào)較為老舊的設(shè)備,只要支持telnet ssh即可伐厌。

2: pexpect 安全性高承绸, 把命令打到設(shè)備上去,打錯(cuò)了挣轨,問題也不大军熏, 比如dis cu? ,誤打成了? diss cuu, 網(wǎng)絡(luò)設(shè)備不識(shí)別這條命令卷扮,只會(huì)報(bào)錯(cuò)忽略荡澎, 雖然命令執(zhí)行出錯(cuò)均践,但不會(huì)出亂子。例外是把router ospf , 打成了 no router ospf . 這種錯(cuò)誤是不行的摩幔。

3:pexpect的備份基于命令輸出記錄日志彤委,那同樣可以做設(shè)備配置。經(jīng)多次大坑后總結(jié)热鞍, pexpect在sendline之后葫慎, 不一定總是要做 pexpect expect ,只要加下time.sleep.薇宠,讓命令稍后再打即可偷办, 前提是要求網(wǎng)工算好每條命令在Sendline后的輸出反饋時(shí)間。

4: 基于pexpect的配置備份要求設(shè)備配置支持terminal length 0之類的命令澄港,目前備份過的設(shè)備均有類似命令椒涯,因?yàn)槿绻麤]有類似命令,在輸出后會(huì)提示類似? ? more? ?, 則無(wú)法記錄輸出記錄日志和配置回梧。

因此最初基于上面完成了全網(wǎng)網(wǎng)絡(luò)設(shè)備的配置废岂,通過httpd? + fotiguard firewall+ crontal做了一套配置自動(dòng)備份平臺(tái)。

后來(lái)又發(fā)現(xiàn)一個(gè)問題狱意,二層的交換機(jī)有時(shí)候會(huì)down掉湖苞,不通。當(dāng)在ip.txt列表文件中的某個(gè)交換機(jī)不通后详囤,pexpect登錄交換機(jī)就會(huì)timeout,腳本就會(huì)報(bào)錯(cuò)退出财骨,導(dǎo)致后續(xù)交換機(jī)全部備份失敗。

后來(lái)為了解決這個(gè)問題藏姐, 加了一個(gè)if 判斷隆箩, 取出pexpect登錄交換機(jī)的返回值 ,當(dāng)index的值為eof 或timeout也就是報(bào)錯(cuò)時(shí)羔杨, pass掉捌臊,忽略這個(gè)錯(cuò)誤,繼續(xù)執(zhí)行后續(xù)的代碼兜材,避免了因?yàn)槟硞€(gè)交換機(jī)下線不通理澎,導(dǎo)致代碼報(bào)錯(cuò)退出,后續(xù)設(shè)備無(wú)法備份的情況出現(xiàn)护姆,所以在這里其實(shí)用continue更合適矾端,?

continue會(huì)不再執(zhí)行后續(xù)的代碼, 重新返回到for循環(huán)卵皂。

腳本大概類似于下面這樣:

腳本

腳本做到這一步秩铆, 依然還面臨這兩個(gè)重大問題:

1: 不支持多線程, 100多交換機(jī)需要半個(gè)多小時(shí)才能備份完配置。

2:交換機(jī)的命令是用Sendline的方式一條一條打進(jìn)去的殴玛, 沒有做到模塊化捅膘。

第二個(gè)問題需要盡快解決,因?yàn)楣救毡竟緯?huì)有20幾臺(tái)cisco交換機(jī)要配置滚粟, 供應(yīng)商會(huì)配置好管理地址寻仗, 腳本里給每臺(tái)交換機(jī)用Sendline改改改,或者每臺(tái)交換機(jī)再登錄凡壤, 都會(huì)很麻煩署尤。

為了解決第二個(gè)問題, 腳本調(diào)用兩個(gè)文件亚侠, 一個(gè)是ip.txt ,一個(gè)是command.txt , 前者用于存放交換機(jī)的ip地址曹体,后者用于存放交換機(jī)的配置命令。


ip.txt



command.txt




腳本





做到這一步硝烂, 只剩下多線程了箕别,腳本如下:




script1



script2
script3


大量配置命令需要發(fā)送到網(wǎng)絡(luò)設(shè)備的話, 需要考慮到 time.sleep()時(shí)間滞谢。


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

20190826更新

在飛塔上遇到了一個(gè)坑串稀,因?yàn)閒orti的輸出特別快,但沒考慮到輸出特別長(zhǎng)狮杨,導(dǎo)致show的輸出被截?cái)啵?剛好斷在有 關(guān)鍵字 console的部分母截, 以為這個(gè)輸出就完整了。

考慮到forti支持通過ftp備份橄教,因?yàn)橛胿sftpd搭建了一個(gè)Ftp服務(wù)器微酬, 每個(gè)ftp用戶都單獨(dú)新建了家目錄,然后forti全部備份到ftp上颤陶。?

之所以需要為每臺(tái)設(shè)備新建用戶, 是因?yàn)樵趂orti上執(zhí)行ftp 備份沒有辦法變更路徑陷遮。


bk


waf? 在web上可以直接指定配置Ftp 備份滓走,奇怪的是命令行沒有ftp備份方式,只有tftp備份帽馋。

之所以重新變更了配置備份搅方,是因?yàn)榭拥?臺(tái)1500D , 4個(gè)電源模塊全掛了绽族。






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姨涡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吧慢,更是在濱河造成了極大的恐慌涛漂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匈仗,居然都是意外死亡瓢剿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門悠轩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)间狂,“玉大人,你說(shuō)我怎么就攤上這事火架〖螅” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵何鸡,是天一觀的道長(zhǎng)纺弊。 經(jīng)常有香客問我,道長(zhǎng)音比,這世上最難降的妖魔是什么俭尖? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮洞翩,結(jié)果婚禮上稽犁,老公的妹妹穿的比我還像新娘。我一直安慰自己骚亿,他們只是感情好已亥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来屠,像睡著了一般虑椎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俱笛,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天捆姜,我揣著相機(jī)與錄音,去河邊找鬼迎膜。 笑死泥技,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的磕仅。 我是一名探鬼主播珊豹,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榕订!你這毒婦竟也來(lái)了店茶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劫恒,失蹤者是張志新(化名)和其女友劉穎贩幻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡段直,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吃溅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸯檬。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡决侈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喧务,到底是詐尸還是另有隱情赖歌,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布功茴,位于F島的核電站庐冯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坎穿。R本人自食惡果不足惜展父,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玲昧。 院中可真熱鬧栖茉,春花似錦、人聲如沸孵延。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尘应。三九已至惶凝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間犬钢,已是汗流浹背苍鲜。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玷犹,地道東北人坡贺。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箱舞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拳亿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350