| 最近接觸到瞭VB,剛好CRT可以支持VB腳本,就想著試試看能不能寫個幫助自己增加工作效率的腳本。又剛好項目裡遇上個問題,需要大批量處理網絡設備端口配置,如果靠手工操作,一臺臺遠程到設備上再一個個口操作,費時費力。基於此背景,開始構想一個腳本來解決問題。
重要:默認讀者具有基本的編程基礎,知道變量、函數等基本概念。前面廢話較多,大佬請直接到三、四、五查看結果即可。
目錄:
- 一、需求分析
- 二、概要設計
- 三、編碼
- 四、測試&實際運行&迭代
- 五、VBS在CRT中常用語法整理
圖1,某公司網絡帶外組網簡圖
一、需求分析
首先介紹操作背景,本次操作由於安全性要求,從公網登錄設備隻能從某公司的VPN登錄到其雲平臺下的某虛機中,操作雲端CRT應用進行配置。由於此次操作數量較大,而該平臺隻支持一個用戶一次登錄一臺設備,而且斷開連接後需要回到web的GUI界面重新登錄雲虛機操作
基於此背景,可以確認以下兩點:
1、珍愛生命和眼睛,拒絕一臺一臺手工配置
2、前東傢的Ex巡檢軟件會斷開會話再新建會話,不適用於此場景
進一步分析組網,如圖1,大量需要操作的設備,在帶外網絡中通過帶外接入交換機,走二層接入,匯聚到帶外匯聚交換機上,其三層網關設置在帶外匯聚交換機上。帶外匯聚交換機再上行接入其他核心層設備,將整個資源池納入管理網絡。
基於組網,我們可以考慮如下操作方式:
1、遠程登錄帶外匯聚交換機,通過三層訪問接入側的網絡設備。
2、到機房接入帶外匯聚交換機,通過三層訪問接入側的網絡設備。
那當然能不去機房就不去啦,能去機房直接大量會話文件一個巡檢工具搞定。所以,接入方式選擇1。
至此,確認瞭通過遠程接入方式,走帶外匯聚跳轉其他設備進行配置。
二、概要設計
確認操作方式,通過模擬單臺設備的登錄、操作過程,得到如下簡易邏輯圖(圖2):
圖2,簡易邏輯圖
進一步細化登錄事件,增加可能出現的流程判定、需操作端口類別判定(圖3)。
圖3,細化的流程圖
三、編碼
對於熟悉編程的讀者,應該已經發現,這個流程實現起來都是一些簡單函數的堆疊,由於操作的端口數量為40+個,我們通過一個for循環來遞增端口。由於以上流程需要重復操作,主函數下需要一個外層的循環體,使用do loop until循環,判斷條件使用if else判斷,對於可能出現的“–more–”使用while循環跳過,大致的框架如下:
Sub Main
Do
登錄語句
if 登錄條件 Then 執行語句
end if
登錄成功開啟日志記錄
while crt.Screen.WaitForString ("- More -",2) '執行記錄判定more
crt.Screen.Send " " & chr(13)
WEnd
Dim i
for i=1 to 44
執行遞增語句
if 端口為up Then
操作up down
end if
next
采集操作後日志
while crt.Screen.WaitForString ("- More -",2)
crt.Screen.Send " " & chr(13)
WEnd
判斷是否回到起點
if 當前是否為已操作設備 Then
退出視圖
end if
Loop until 退出條件
End Sub