close
在主機上寫個 Script 利用排程每五分鐘 判斷 gateway 192.168.0.1 是否可以 ping 到 google 不可以就換 gateway 192.168.0.2 且發信告知
當切換到 192.168.0.2 後 , 下次過 5 分鐘再判斷看看 gateway 192.168.0.1 是否恢復 , 恢復就切回 192.168.0.1 且寄信通知 ....
亂寫就用一條龍寫法 ...不寫副程式了 ....
'判斷是否是 Administrator 權限 , 不是Admin 將切換 ... 切換時可能會問 (Y/N) If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 WScript.Quit End If '取得 strDefaultIPGateway strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each objNetAdapter in colNetAdapters If Not isNull(objNetAdapter.DefaultIPGateway) Then strDefaultIPGateway = Join(objNetAdapter.DefaultIPGateway, ",") End If Next '設定檢查 hostname Dim hostname hostname = "www.google.com" '判斷 是否 gateway 是否是 192.168.0.2 if strDefaultIPGateway = "192.168.0.2" Then ' 如 gateway 是 192.168.0.2 就切換到 192.168.0.1 Set WshShell3 = WScript.CreateObject("WScript.Shell") WshShell3.currentdirectory="c:\" WshShell3.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.0.1", 0 Set WshShell3 = Nothing ' 用 gateway 192.168.0.1 ping google Set WshShell = WScript.CreateObject("WScript.Shell") Ping = WshShell.Run("ping -n 1 " & hostname, 0, True) Select Case Ping ' 當 ping 到 google 寄信通知已切換回來 gateway 192.168.0.1 Case 0 Set CDOMail = CreateObject("CDO.Message") With CDOMail .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") =2 .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.0.3" .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "echochio" .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "echochiopassord" .Configuration.Fields.Update .From = "echochio@test.com" .To = "echochio@test.com" .Subject = "Back to gateway to 192.168.0.1" .TextBody = "ping www.google.com.tw OK !! Back to gateway to 192.168.0.1" .Send End With Set CDOMail = Nothing ' 當 ping 不到 google 切換回去原本的 gateway 192.168.0.2 Case 1 Set WshShell2 = WScript.CreateObject("WScript.Shell") WshShell2.currentdirectory="c:\" WshShell2.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.0.2", 0 Set WshShell2 = Nothing End Select ' 如 gateway 不是 192.168.0.2 所以是 192.168.0.1 , ping google Else Set WshShell = WScript.CreateObject("WScript.Shell") Ping = WshShell.Run("ping -n 1 " & hostname, 0, True) Select Case Ping '當 ping 不到 google 切換去 192.168.0.2 且寄信通知 Case 1 Set WshShell2 = WScript.CreateObject("WScript.Shell") WshShell2.currentdirectory="c:\" WshShell2.Run "route change 0.0.0.0 mask 0.0.0.0 192.168.0.2", 0 Set WshShell2 = Nothing '寄信通知 切換到 192.168.0.2 了 Set CDOMail = CreateObject("CDO.Message") With CDOMail .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") =2 .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.0.3" .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "echochio" .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "echochiopassword" .Configuration.Fields.Update .From = "echochio@test.com" .To = "echochio@test.com" .Subject = "defult gateway cannot to google" .TextBody = "ping www.google.com.tw fail !! Change gateway to 192.168.0.2" .Send End With Set CDOMail = Nothing End Select End If
開始是判斷是否是 Administrator 權限
其中 mail server 是 192.168.0.3 , 帳號 echochio 密碼 echochiopassword , 寄信到 echochio@test.com
要設定最高權限執行
還沒寫完 ...要寫 ...當第二條gateway 也掛了 .....那....要如何 ? 發簡訊 ....哈
全站熱搜
留言列表