簡單介紹VBS 批次Ping的專案實現
導讀 | 本文主要介紹了VBS批次Ping的專案實現,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧 |
本文用vb編寫的 ping程式實現,具體如下:
'判斷當前VBS指令碼是否由CScript執行 If InStr(LCase(WScript.FullName), "cscript.exe") = 0 Then '若不是由CScript執行,則使用CScript重新執行當前指令碼 Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "cscript.exe", """" & WScript.ScriptFullName & """", , , 1 WScript.Quit '退出當前程式 End If '---------------------------------------------------------------------------------------------- Set objFSO = CreateObject("Scripting.FileSystemObject") '建立日誌檔案 Set fileLog = objFSO.CreateTextFile("Ping執行結果(" &_ Year(Now()) & "-" & Month(Now()) & "-" & Day(Now()) & " " &_ Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now()) & ").txt", True) '---------------------------------------------------------------------------------------------- 'Ping 方案類 Class PingScheme Public Address '目標地址 Public DisconnectionCount '斷線計數 End Class Dim dicPingScheme '配置方案集合 Set dicPingScheme = CreateObject("Scripting.Dictionary") Dim strPingQuery 'Ping查詢條件語句 strPingQuery = Null '新增Ping方案到方案集合 Public Sub AddPingScheme ( addr ) Set newPingScheme = New PingScheme newPingScheme.Address = addr newPingScheme.DisconnectionCount = 0 dicPingScheme.Add addr, newPingScheme '合成Ping查詢條件語句 If IsNull( strPingQuery ) Then strPingQuery = "Address='" & addr & "'" Else strPingQuery = strPingQuery & "OR Address='" & addr & "'" End If End Sub '---------------------------------------------------------------------------------------------- AddPingScheme ( "8.8.8.8" ) AddPingScheme ( "8.8.4.4" ) AddPingScheme ( "192.168.1.8" ) '---------------------------------------------------------------------------------------------- Dim bEmailFlag '傳送郵件標誌 bEmailFlag = False Const LoopInterval = 5000 '迴圈間隔 Dim strDisplay '顯示快取字串 Dim strLog '日誌檔案快取字串 '連線WMI服務 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Do strDisplay = "----" & Now & "----" & vbCrlf strLog = "" '透過WMI呼叫Ping命令,返回Ping執行結果集合 Set colPings = objWMIService.ExecQuery("SELECT * FROM Win32_PingStatus WHERE " & strPingQuery) '遍歷結果集合 For Each objPing in colPings strLog = strLog & FormatDateTime(Now()) & vbTab &_ objPing.Address & vbTab & objPing.StatusCode & vbTab strDisplay = strDisplay & "[" & objPing.Address & "] - " Select Case objPing.StatusCode Case 0 strDisplay = strDisplay & objPing.ProtocolAddress &_ ", Size: " & objPing.ReplySize &_ ", Time: " & objPing.ResponseTime &_ ", TTL: " & objPing.ResponseTimeToLive & vbCrlf strLog = strLog & objPing.ProtocolAddress & vbTab & objPing.ReplySize & vbTab &_ objPing.ResponseTime & vbTab & objPing.ResponseTimeToLive Case 11002 strDisplay = strDisplay & "目標網路不可達" & vbCrlf strLog = strLog & "目標網路不可達" Case 11003 strDisplay = strDisplay & "目標主機不可達 " & vbCrlf strLog = strLog & "目標主機不可達" Case 11010 strDisplay = strDisplay & "等待超時" & vbCrlf strLog = strLog & "等待超時" Case Else If IsNull(objPing.StatusCode) Then strDisplay = strDisplay & "找不到主機 " & objPing.Address & vbCrlf strLog = strLog & "找不到主機 " & objPing.Address Else strDisplay = strDisplay & "錯誤:" & objPing.StatusCode & vbCrlf strLog = strLog & "錯誤:" & objPing.StatusCode End If End Select strLog = strLog & vbCrlf '判斷 Ping返回結果是否執行成功 If objPing.StatusCode <> 0 Then '若不成功 將相應的 DisconnectionCount 加 1 dicPingScheme(objPing.Address).DisconnectionCount = dicPingScheme(objPing.Address).DisconnectionCount + 1 'DisconnectionCount = 10 時 置位 傳送郵件標誌 If dicPingScheme(objPing.Address).DisconnectionCount = 10 Then bEmailFlag = True End If Else '若成功 將相應的 DisconnectionCount 清零 dicPingScheme(objPing.Address).DisconnectionCount = 0 End If Next '輸出顯示 PrintLine strDisplay '儲存日誌 fileLog.WriteLine strLog '如果 傳送郵件標誌 被置位 清除標誌 並 傳送郵件 If bEmailFlag = True Then bEmailFlag = False '清除 標誌 SendEmail "裝置斷線 " & Now, strDisplay End If '掛起指定時間,暫停 WScript.Sleep(LoopInterval) Loop '--------------------------------------------------------------------------------------- '標準輸出 Public Sub Print ( tmp ) WScript.StdOut.Write tmp End Sub '標準輸出以換行符結尾 Public Sub PrintLine ( tmp ) WScript.StdOut.Write tmp & vbCrlf End Sub '--------------------------------------------------------------------------------------- '傳送郵件 Public Sub SendEmail(title, textbody) Set objCDO = CreateObject("CDO.Message") objCDO.Subject = title objCDO.From = "XXX@qq.com" objCDO.To = "XXX@qq.com" objCDO.TextBody = textbody cdoConfigPrefix = " Set objCDOConfig = objCDO.Configuration With objCDOConfig .Fields(cdoConfigPrefix & "smtpserver") = "smtp.qq.com" .Fields(cdoConfigPrefix & "smtpserverport") = 465 .Fields(cdoConfigPrefix & "sendusing") = 2 .Fields(cdoConfigPrefix & "smtpauthenticate") = 1 .Fields(cdoConfigPrefix & "smtpusessl") = true .Fields(cdoConfigPrefix & "sendusername") = "XXX" .Fields(cdoConfigPrefix & "sendpassword") = "XXX" .Fields.Update End With objCDO.Send Set objCDOConfig = Nothing Set objCDO = Nothing End Sub
到此這篇關於VBS 批次Ping的專案實現的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2899785/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹VBS批次重新命名檔案並且操作前備份原有檔案
- 簡單介紹NMS的實現方法
- 簡單介紹 Vue 3.0 專案建立Vue
- Vue3專案的簡單搭建與專案結構的簡單介紹Vue
- 簡單介紹numpy實現RNN原理實現RNN
- 簡單介紹Shell指令碼之檔案批次建立與修改的方法指令碼
- Docker批次容器編排的實現介紹Docker
- js實現的動態載入css檔案簡單介紹JSCSS
- RPC模式的介紹以及簡單的實現RPC模式
- javascript實現繼承方式簡單介紹JavaScript繼承
- javascript實現鏈式呼叫簡單介紹JavaScript
- javascript實現二維陣列實現簡單介紹JavaScript陣列
- 簡單介紹Go 字串比較的實現示例Go字串
- jquery實現的元素居中外掛簡單介紹jQuery
- 執行緒池的介紹及簡單實現執行緒
- 檔案管理簡單介紹
- VBS與JS簡介JS
- NodeJS專案基礎結構簡單介紹NodeJS
- vue-cli快速構建專案簡單介紹Vue
- Web專案開發介紹及實戰專案介紹Web
- 實現微信搖一搖功能簡單介紹
- 使用CORS實現ajax跨域簡單介紹CORS跨域
- 實現js檔案動態載入的幾種方式簡單介紹JS
- day01-專案介紹&功能實現
- 簡單介紹python中的單向連結串列實現Python
- AngularJS實現的表單編輯提交功能簡單介紹AngularJS
- 簡單介紹pytorch中log_softmax的實現PyTorch
- jquery實現的操作class樣式類簡單介紹jQuery
- jquery實現的圖片預載入簡單介紹jQuery
- 面試時如何不簡單de介紹自己的專案經驗?面試
- ionic V3.10 新建空白專案中檔案的簡單介紹
- 簡單介紹SpringMVC RESTFul實現列表功能SpringMVCREST
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- javascript模擬實現私有屬性簡單介紹JavaScript
- javascript如何實現模組程式設計簡單介紹JavaScript程式設計
- 簡單介紹Angular單元測試之事件觸發的實現Angular事件
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- CSS實現的網頁柵格佈局簡單介紹CSS網頁