使用主动脚本快速备份switch装备51CTO博客 - 牛牛娱乐

使用主动脚本快速备份switch装备51CTO博客

2019年03月04日08时29分19秒 | 作者: 傲薇 | 标签: 备份,装备,脚本 | 浏览: 2473

运用主动脚本快速备份switch装备


问题陈说:

体系剖析:

流程剖析:

代码完结:

测验:

Bug:


问题陈说:

为支撑公司现有事务运转,现在IT架构有超越200台交换机运转。为确保事务的不间断运转,需定时对交换机进行装备备份,以便在灾祸康复时进行快速康复。按一般做法,需手动一台一台登入,备份,办理这些装备文件。以均匀完结一台switch备份需耗时3分钟,按200台计,需耗时3*200=600分钟=10H。因耗时过长,现在只能每月备份中心层switch,散布层Switch不定时进行。这样不能确保备份装备为最新,或许形成灾祸康复时刻延伸,下降灾祸康复的正确性。故急需缩短备份时刻,并进步备份的频率。


体系剖析:

一般进行switch装备备份,咱们运用SecureCRT加tftp32.exe,在指令行形式下进行备份。按公司现有Switch,发现备份指令大约分为4类,而且,咱们发现SecureCRT中支撑运用vb script进行一些批量操作。经过剖析其语法,得出一般思路为,经过循环重复履行备份指令,使进程快速及简略。


流程剖析:

备份流程见下图,sub main()读取Config.txt中的帐户,暗码,L3暗码,TFTP server ip;并以hostlist.txt中的switch ip逐个连线。再调用sub login(),登入并进入Super 3(或enable)形式,再调用sub copytotftp()进行备份,直至hostlist.txt中悉数switch完结备份。从体系剖析中可知,MSL现有switch备份有四类,在此流程中,config.txt与sub main()是不需要更改,只需依据不同类型switch更改login(),copytotftp()即可。此流程表达清楚,移植性强(如只需更改一条备份指令)。


代码完结:

代码如下,要害句子已加粗。

#$language = "VBScript"

#$interface = "1.0"

本脚本完结功用:从config.txt文件读取设备IP地址,登入账户,暗码,L3暗码,TFTP Server,并主动依据hostlist.txt主动衔接到设备上备份。主动将设备装备备份

本脚本可依据不同类型,更改备份指令备份不同类型switch 装备

bakupfor 3050,5012,5024,3026,3552


Const ForReading = 1, ForWriting = 2,ForAppending = 8

Dim username,password,superpass,tftphost

Dim fso,ip

Set fso =CreateObject("Scripting.FileSystemObject")

界说相同备份指令类型设备IP列表

Dim hostlist

hostlist = "hostlist.txt"

翻开并读取登录用户名,暗码,L3暗码,TFTP host

Set conf =fso.OpenTextFile("config.txt",Forreading, False)

username= conf.readline

password= conf.readline

superpass= conf.readline

tftphost= conf.readline

conf.close



Sub Main

翻开设备办理地址的文件

Set list =fso.opentextfile(hostlist,1)

DO While list.AtEndOfStream <>True

读出每行

ip = list.ReadLine

On Error Resume Next

Telnet到这个设备上

crt.session.connect "/telnet "& ip,False

测验衔接成功与否

If(crt.session.connected) Then

CallLogin(username,password)

Copytotftp(ip)

crt.Session.Disconnect

Else

crt.Session.logfilename= "c:\2.txt"

crt.Session.log

End if

Loop

MsgBox "已完结备份"

list.close

crt.quit

End Sub


登入并进入特权形式

SubLogin(username,password)

crt.Screen.Synchronous = True

If (Notcrt.screen.waitforstring("sername:",4)) Then

crt.screen.send vbcr

crt.screen.waitforstring"sername:"

End If


输入telnet暗码

crt.Screen.Send username & vbcr

crt.Screen.WaitForString"Password:"

crt.Screen.Send password & vbcr

进入特权形式

crt.Screen.Send "super 3"& vbcr

crt.Screen.WaitForString"Password:"

crt.Screen.Send superpass & vbcr

crt.Screen.waitForString ">"


体系视图形式,for 3050,5012,5024,3026,但5148,3652需注释掉它

crt.Screen.Send "system-view"& vbcr

crt.Screen.waitForString "]"

crt.Screen.Synchronous = False

MsgBox "衔接成功"

End Sub


copyswitch config for h3c (3050,5012,5024,3026)

Sub copytotftp(ip)

crt.Screen.Synchronous = True

MsgBox "进入备份"

Dim str1

for 3050,5012,5024,3026,3552

str1 = "tftp put vrpcfg.txt //" & tftphost& "/" & ip & ".txt"

for for 5148,3652,留意此二类型备份在用户视图下进行,故需注释掉sub login中视图形式部分

str1 = "tftp " &tftphost & " put config.cfg " & ip &"_config.cfg"

crt.Screen.Send str1 & vbcr


for 3050,5012,5024,3026

crt.Screen.WaitForString "]"

crt.Screen.Send vbcr


for 5148,3652

crt.Screen.WaitForString">"

crt.Screen.Send vbcr


crt.Screen.Synchronous = False

End Sub


测验:

测验进程如下:

1)从zabbix中导出悉数switch记载,运用ping测验其他连通性,承认现有在用switch IP list.保存为

2)按其记载称号(如S6-3FD-Q5148P-T-10.86.7.77)。把它拆分为类型,IP记载。并按类型,分红四类(详见注1)。保存为

3)测验备份。把分类后的IP导入到hostlist.txt,翻开tftp32.exe,在SecureCRT中翻开“脚本”->运转。挑选相应的脚本,即开端备份。

4)把得出备份成果(成功备份的列表),与hostlist.txt中记载比较,把不能备份的IP记载到err表中。

5)逐个手动承认不能备份原因:

a)super 3密碼錯誤,或爲中心層。

b)記錄中型號挂号錯誤,导致运用过错的备份脚本备份。

c)装备文件名稱不爲默認。

批改过错:

第一类过错,批改super 3暗码过错,或把中心层switch独自出来备份。

第二类过错,批改记载并更新hostlist.txt,

第三类过错,可批改装备文件称号为默许称号。

6)更新switch IP list,再次测验备份。5分钟即完结悉数散布层,接入层switch.


Bug:

1.暂不能对无法备份IP进行记载。(或许原因,暗码过错,类型过错,装备文件不为默许)

2.暂不能对无法连线IP快速越过,或记载。需等候1分钟左右。

3.Hostlist.txt中IP地址左右不能有空格。



注1:分类如下h3c_1(3050,5012,5024,3026,3552),h3c_2(5148,3652),cisico_1(2950,2970),cisico_2(2948,4006).

注2:config.txt包含username,password,L3 pass word,tftp server ip.


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章