首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

SecureCRT VBScript 腳本實戰指南:自動化運維從入門到精通

     編輯:PHP 相關知識

SecureCRT VBScript 腳本實戰指南:自動化運維從入門到精通

SecureCRT 內置 VBScript 引擎,通過 crt.Screen、crt.Session、crt.Dialog 等對象模型,可實現網絡設備批量配置、巡檢、日誌歸檔等全自動化運維。本文系統梳理核心 API、腳本結構與實戰案例。

核心對象與高頻方法

1. crt.Screen —— 屏幕交互核心

方法說明典型用法
WaitForString(str, timeout)等待單一關鍵字出現,返回 Booleancrt.Screen.WaitForString("Password:", 10)
WaitForStrings(arr, timeout)等待多關鍵字任一出現,返回索引(1-based),超時返回 0idx = crt.Screen.WaitForStrings(Array("cisco","huawei"), 5)
Send(str)發送字符串(需手動加 Chr(13) 回車)crt.Screen.Send "conf t" & Chr(13)
Synchronous = True開啟同步模式(逐字符等待),必開,否則 WaitForString 失效腳本開頭 crt.Screen.Synchronous = True

2. crt.Session —— 會話控制

  • Connect("/telnet 192.168.1.1") / Connect("/ssh user@host")
  • Disconnect 斷開
  • LogFileName = "path.log" + Log(True) 開啟日誌記錄
  • Log(False) 關閉日誌

3. crt.Dialog —— 圖形化交互

  • Prompt("提示", "標題", "默認值", False):輸入框(密碼框用 True)。
  • MessageBox("內容", "標題", 按鈕圖標常量組合):彈窗確認。
  • 常量:ICON_INFO=64, BUTTON_YESNO=4, IDYES=6, IDNO=7 等。

腳本三大基本結構

' 1. 順序結構:自動登錄示例
Sub Main
  crt.Screen.Synchronous = True
  crt.Session.Connect "/telnet 192.168.0.2"
  crt.Screen.WaitForString "login:", 10
  crt.Screen.Send "admin" & Chr(13)
  crt.Screen.WaitForString "Password:", 10
  crt.Screen.Send "secret" & Chr(13)
End Sub

' 2. 選擇結構:設備廠商識別
idx = crt.Screen.WaitForStrings(Array("cisco","huawei","H3C"), 5)
Select Case idx
  Case 1: MsgBox "思科設備"
  Case 2: MsgBox "華為設備"
  Case 3: MsgBox "華三設備"
  Case Else: MsgBox "未知設備"
End Select

' 3. 循環結構:批量巡檢 IP 列表
For Each ip In Array("10.0.0.1","10.0.0.2","10.0.0.3")
  ' ... 連接並執行命令 ...
Next

實戰案例:AIX 服務器巡檢腳本 (節選)

' ========== 全局常量區 ==========
Const ICON_INFO = 64, BUTTON_YESNO = 4, IDYES = 6, IDNO = 7
' ========== 輔助函數區 ==========
Function Login
  ip = crt.Dialog.Prompt("服務器IP:", "AIX", "192.1.1.207", False)
  If Trim(ip) = "" Then crt.Quit
  username = crt.Dialog.Prompt("用戶名:", "AIX", "root", False)
  passwd = crt.Dialog.Prompt("密碼:", "AIX", "congine", True) ' True=密碼框
  crt.Screen.Synchronous = True
  crt.Session.Connect "/telnet " & ip
  crt.Screen.WaitForString "login:"
  crt.Screen.Send username & Chr(13)
  crt.Screen.WaitForString "Password:"
  crt.Screen.Send passwd & Chr(13)
  If crt.Screen.WaitForString("invalid login", 3) Then
    crt.Dialog.MessageBox "登錄失敗", "錯誤", ICON_INFO
    crt.Quit
  End If
End Function

Function WriteLog
  logFile = crt.Dialog.Prompt("日誌路徑:", "AIX", "c:\" & ip & ".log", False)
  crt.Session.LogFileName = logFile
  crt.Session.Log True
End Function

Function SendCmd(cmd, waitSec)
  crt.Screen.Send Chr(13) & Chr(13) ' 換行確保提示符
  crt.Screen.Send cmd & Chr(13)
  crt.Sleep waitSec * 1000
End Function

Function GetInfo
  SendCmd "hostname", 1
  SendCmd "prtconf |grep 'Machine Serial Number'", 6
  SendCmd "lsdev -C |grep proc", 2
  SendCmd "lsattr -El mem0", 2
  SendCmd "df -g", 2
  SendCmd "errpt -a", 2
  SendCmd "vmstat 2 10", 25
  SendCmd "iostat 2 10", 25
End Function

' ========== 主入口 ==========
Sub Main
  Login
  WriteLog
  GetInfo
  If crt.Dialog.MessageBox("採集完成,退出CRT?", "提示", ICON_INFO + BUTTON_YESNO) = IDYES Then
    crt.Quit
  End If
  crt.Session.Log False
End Sub

最佳實踐提煉

  1. 必開 Synchronous:所有 WaitForString 前設置 crt.Screen.Synchronous = True,結束前設 False。
  2. 健壯的等待策略:關鍵步驟雙重驗證(等提示符 + 睡眠),防網絡抖動導致指令發早。
  3. 參數外部化:IP/用戶/密碼/命令列表讀取外部 CSV/INI,腳本與數據分離。
  4. 錯誤處理與日誌:關鍵節點 On Error Resume Next + 寫入獨立錯誤日誌,避免單台失敗阻塞整批。
  5. 版本控制:腳本納入 Git,記錄變更歷史,團隊共享複用。

進階方向

  • Python 替代 VBScript:SecureCRT 7.2+ 支持 Python,生態更豐富(Netmiko、NAPALM、TextFSM 解析結構化數據)。
  • API 模式:crt.API 供外部程序調用,構建自動化平台。
  • 結構化解析:配合 TextFSM/Genie 將 show 輸出轉 JSON,入庫分析、合規檢查。

掌握 SecureCRT 腳本,能將重複性運維工作效率提升 10 倍以上,是網絡工程師向「網絡自動化工程師」轉型的敲門磚。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved