腳本+批處理打造IIS監控器『羅斌原創』
首先說下我什麼要寫它,第1、它能夠幫你作一件事,那就是隨時給你監控你公司的網站服務器的狀態,一旦你的網站出現問題不能訪問了,它就會自動幫你重啓IIS而後讓死掉的網站活起來。第2、若是你公司的網站在你休假或者放假的日子裏出了問題沒法訪問,它至少能夠給你重啓下IIS,讓網站起死回生。
該IIS監控器是由3個部分組成,一個批處理(主體部分),和兩個VBS腳本(用於啓動IIS和循環執行檢查),它們3個互相配合起來就有了監控IIS狀態的功能了。該程序會在c:\windows\system目錄下生成"網站運行日誌.log"的日誌以便您查看網站的運行狀況,其日誌格式以下:
2010-01-28 星期四 13:03:59.23 網站正常運轉。
2010-01-28 星期四 13:04:50.85 網站出問題了!
13:04:50.85正在重啓IIS.....
第一個:批處理(網站運行狀態監控器.bat)
@echo off
@title 網站運行狀態監控器 『羅斌製做』 QQ:287727615
@setlocal enabledelayedexpansion
::將第二個參數(IP加端口)傳給%%i,第五個參數(PID號)傳給%%j;
for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p TCP"`) do (
echo %%i %%j >>log.log
)
::設置一個變量str爲0.0.0.0:80,若是在log.log中第二行發現存在0.0.0.0:80
::則表示網站正在運行,若是沒有發現則表示網站已經關閉,執行重啓。
@set str=0.0.0.0:80
@for /f "delims=" %%i in (log.log ) do (
set /a num+=1
if !num! epu2 set var=%%i
if !num! epu2 set var=!var:~2,12!
)
@echo !var!
@if %str%==%var% (
@echo %date% %time% 網站正常運轉。>>網站運行日誌.log
) else (
@echo %date% %time% 網站出問題了! >>網站運行日誌.log
@echo %time%正在重啓IIS..... >>網站運行日誌.log
iisreset /restart /timeout:0 >>網站運行日誌.log
@echo %time%正在重啓服務器..... >>網站運行日誌.log
@call 啓動IIS腳本.vbs
)
@ping 127.0.0.1 -n 2 >nul
@del log.log
批處理的內容我就很少作解釋了,是我研究了近3天的時間才寫出來的,若是你對這個批處理的寫做感興趣的話就加我Q 287727615 問我有行了。
第二個:腳本(啓動IIS腳本.vbs )
Function KillProcess(proname)
for each proc in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if strcomp(proc.name,proname)=0 then
proc.Terminate
end if
next
set proc=nothing
End Function '定義一個結束進程的方法
set os = CreateObject("wscript.shell") '如下的腳本操做步驟爲,打開iis而後點擊啓動。
set oshell= createobject("wscript.shell") '這樣作的目的只有一個,就是若是批處理沒有啓動成功
os.run "C:\WINDOWS\system32\inetsrv\iis.msc" '則執行這個腳原本啓動,以保證萬無一失。
wscript.sleep 2000
os.sendkeys "{DOWN}"
wscript.sleep 2000
os.sendkeys "{TAB}"
wscript.sleep 2000
os.sendkeys "{ENTER}"
wscript.sleep 2000
os.sendkeys "{DOWN}"
wscript.sleep 2000
os.sendkeys "%a"
wscript.sleep 2000
os.sendkeys "{S}"
KillProcess "mmc.exe"
這個腳本只是針對一個網站而寫的,若是你的IIS有多個網站的話能夠看下面的《提示》來稍作修改就能夠了
第三個:腳本(開始監控.vbs)
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
set copy1=createobject("scripting.filesystemobject")
set fso=wscript.createobject("scripting.filesystemobject")
fso.copyfile "啓動IIS腳本.vbs","C:\windows\system\啓動IIS腳本.vbs"
fso.copyfile "網站運行狀態監控器.bat","C:\windows\system\網站運行狀態監控器.bat"
copy1.getfile(wscript.scriptfullname).copy("c:\windows\system\開始監控.vbs")
path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
set ws=wscript.createobject("wscript.shell")
t=ws.regwrite(path & "IIS監控","c:\windows\system\開始監控.vbs")
do
ws.run "cmd /c 網站運行狀態監控器.bat",vbhide
wscript.sleep 7200000 '每2個小時循環執行一次 網站運行狀態監控器.bat 。
loop
這個腳本其實最主要的只是個控制」 網站運行狀態監控器.bat 「 每2個小時運行一次的做用罷了。
《用法》
直接點擊 開始監控.vbs 運行就能夠了。 運行 開始監控.vbs 該程序會自動將該壓縮包裏的「開始監控.vbs 」 , 「 網站運行狀態監控器.bat 」 , 「 啓動IIS腳本.vbs 」 這個三個文件複製到system目錄下,同時會增長一個組冊表的啓動項。讓其開機啓動。
《提示》
該程序只用於監控IIS的狀態,也就是說,若是IIS中止工做那麼該程序會在2個小時以內作出檢測。一旦IIS不在工做,那麼程序會自動爲您啓動IIS。
注意,因爲程序的不靈活性,它不是拿到任何地方都能用的。須要稍做修改的地方是
os.run "C:\WINDOWS\system32\inetsrv\iis.msc"
wscript.sleep 2000
os.sendkeys "{DOWN}" '打開IIS.msc以後按下 下 方向鍵
wscript.sleep 2000
os.sendkeys "{TAB}" '而後按下 TAB 鍵
wscript.sleep 2000
os.sendkeys "{ENTER}" '而後按下 回車 鍵
好了以上若是稍微有點VBS基礎的人都能看得懂。本身稍作修改就能用了。