使用了telnetlib模塊,首先登錄到交換機(jī),列出并獲取配置文件的名稱,然后通過tftp協(xié)議將配置文件傳輸?shù)轿募?wù)器上,為避免配置文件覆蓋,將備份的配置文件名稱統(tǒng)一加入日期以作區(qū)分。
1. 登錄方式和口令有好幾種,比較懶惰,通過不同列表以做區(qū)分,如果每個(gè)交換機(jī)口令都不相同的話,就需要額外處理了。
2. 交換機(jī)的配置文件也有多種類型,也是通過列表進(jìn)行區(qū)分。
3. 有些交換機(jī)支持ftp和sftp,但測(cè)試發(fā)現(xiàn)有些雖然有相應(yīng)的客戶端命令,但傳輸總有問題。也不能將每個(gè)交換機(jī)都配置為ftp服務(wù)器,不安全也不方便。最后采用tftp解決。tftp比較簡(jiǎn)單,沒有辦法創(chuàng)建目錄以區(qū)分不同日期的備份。好在配置文件已經(jīng)加入了日期做區(qū)分,馬馬虎虎可以運(yùn)行了。
import telnetlib,sys from datetime import date today=date.today() print(today) ipaddrset1=['192.168.1.19','192.168.1.29','192.168.1.59'] ipaddrset2=['192.168.1.39','192.168.1.49','192.168.1.69','192.168.1.56','192.168.1.6','192.168.1.9','192.168.1.24', '192.168.1.72','192.168.1.73','192.168.1.74','192.168.1.75','192.168.1.76','192.168.1.41','192.168.1.16','192.168.1.32',] ipaddrset3=['192.168.1.51','192.168.1.52','192.168.1.53','192.168.1.54','192.168.1.55', '192.168.1.15','192.168.1.16','192.168.1.22','192.168.1.23','192.168.1.25','192.168.1.26','192.168.1.27', '192.168.1.28','192.168.1.7'] hostname='192.168.8.201' tn=telnetlib.Telnet(hostname) print(tn.read_until(b'Username:').decode('ascii')) tn.write(b'**********\n') print(tn.read_until(b'Password:').decode('ascii')) tn.write(b'************\n') print(tn.read_until(b'>').decode('ascii')) for ipaddr in ipaddrset1: telnet_dest="telnet "+ipaddr tn.write(telnet_dest.encode('ascii')+b'\n') tn.read_until(b'Password:').decode('ascii') tn.write(b'**********\n') tn.read_until(b'>').decode('ascii') tn.write(b'dir\n') tn.read_until(b'>').decode('ascii') fn=str(today)+"_"+str(ipaddr)+"_vrpcfg.zip \n" cmdli="tftp 192.168.5.33 put vrpcfg.zip " +str(fn) tn.write(cmdli.ede('ascii')) tmp=tn.read_until(b'>').decode('ascii') if "successfully" in tmp: print(str(ipaddr)+" backup successfully!") else: print(str(ipaddr)+" backup NOT successfully!") tn.write(b'quit\n') tn.read_until(b'>') for ipaddr in ipaddrset2: telnet_dest="telnet "+ipaddr tn.write(telnet_dest.encode('ascii')+b'\n') tn.read_until(b'Password:').decode('ascii') tn.write(b'**********\n') tn.read_until(b'>').decode('ascii') tn.write(b'dir\n') tn.read_until(b'>').decode('ascii') fn=str(today)+"_"+str(ipaddr)+"_startup.cfg \n" cmdli="tftp 192.168.5.33 put startup.cfg " +str(fn) tn.write(cmdli.encode('ascii')) tmp=tn.read_until(b'>').decode('ascii') if "successfully" in tmp: print(str(ipaddr)+" backup successfully!") else: print(str(ipaddr)+" backup NOT successfully!") tn.write(b'quit\n') tn.read_until(b'>') for ipaddr in ipaddrset3: telnet_dest="telnet "+ipaddr tn.write(telnet_dest.encode('ascii')+b'\n') tn.read_until(b'Password:').decode('ascii') tn.write(b'************\n') tn.read_until(b'>').decode('ascii') tn.write(b'dir\n') tn.read_until(b'>').decode('ascii') fn=str(today)+"_"+str(ipaddr)+"_startup.cfg \n" cmdli="tftp 192.168.5.33 put startup.cfg " +str(fn) tn.write(cmdli.encode('ascii')) tmp=tn.read_until(b'>').decode('ascii') if "successfully" in tmp: print(str(ipaddr)+" backup successfully!") else: print(str(ipaddr)+" backup NOT successfully!") tn.write(b'quit\n') tn.read_until(b'>') tn.write(b'exit\n') tn.close()
以上這篇使用python telnetlib批量備份交換機(jī)配置的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
