SecureCRT指令碼編寫常用函數之WaitForString
在我早先寫的博文裡,有寫了一些代碼,因為近段時間又接觸了一些需求,因此就想把一些常用的功能函數進行一下總結。
作為一個高效的網管員,指令碼、編程我個人認為至少會一種,如果真不會,那至少也要會使用多種網管工具來簡化工作,提高工作效率。網管的工作很多都是機械式的,人工操作顯然是最笨的辦法。
自從接觸到SecureCRT以來,就被其強大的編程介面所吸引,當然,像SolarWinds、KiwiSyslog等網管軟體也支援此類指令碼代碼。
本文主要講解Screen函數的使用。指令碼語言均使用VBScript。
======================================無敵分割線==============================================
在SecureCRT裡,用得最多的應該就是crt.Screen,基本上很多操作都是基於螢幕的返回字來決定下一步的操作。
====================Screen之螢幕返回判斷====================
在判斷螢幕返回字的函數裡,主要用到的是兩個:
1、crt.Screen.WaitForString("KeyString",timeout)
2、crt.Screen.WaitForStrings("KeyString1","KeyString2",...,timeout)
---------------------WaitForString詳解--------------------
第一個函數是單字串判斷,KeyString是需要尋找的關鍵字,timeout是一個逾時閥值,例如:
crt.Screen.WaitForString("Username:",5)
該行代碼的意思就是在5秒內沒有檢測到Username:出現,就執行下一條語句,如果改成:crt.Screen.WaitForString("Username:")
那就是指直到Username:出現才執行下一行代碼。
WaitForString是有傳回值的,傳回值是True 或者 False。
因此,可以根據傳回值進行條件判斷以確定一下條代碼。例如:
If (crt.Screen.WaitForString ("current state : UP",1)<>False) Then
portStatus="PortUP"
Else
portStatus="PortDown"
End If
這段代碼用於判斷連接埠狀態情況並記錄下來。
---------------------WaitForStrings詳解--------------------
第二個函數用於多個字串的判斷,timeout的作用是一樣的。例如:
crt.Screen.WaitForStrings("cisco","huawei","H3C",5)
意思就是在5秒內有檢測到相應的字元時,返回相應的索引號(索引號是從1開始的)。如果都沒有檢查到,則返回0.因此,該函數的使用可以如下:
Dim SwitchKey
SwitchKey=crt.Screen.WaitForStrings("cisco","huawei","H3C",5)
Select case SwitchKey
case 1
MsgBox "思科裝置"
case 2
MsgBox "華為裝置"
case 3
MsgBox "華三裝置"
case else
MsgBox "未知裝置"
End Select