指令碼+批處理打造IIS監控器『羅斌原創』
 
          首先說下我什麼要寫它,第一、它可以幫你做一件事,那就是隨時給你監控你公司的網站伺服器的狀態,一旦你的網站出現問題不能訪問了,它就會自動幫你重啟IIS然後讓死掉的網站活起來。第二、如果你公司的網站在你休假或者放假的日子裡出了問題無法訪問,它至少可以給你重啟下IIS,讓網站起死回生。
 
        該IIS監控器是由3個部分組成,一個批處理(主體部分),和兩個VBS指令碼(用於啟動IIS和迴圈執行檢查),它們3個互相配合起來就有了監控IIS狀態的功能了。該程式會在c:windowssystem目錄下生成”網站執行日誌.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:\.
ootcimv2: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:WINDOWSsystem32inetsrviis.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:windowssystem啟動IIS指令碼.vbs”
fso.copyfile “網站執行狀態監控器.bat”,”C:windowssystem網站執行狀態監控器.bat”
copy1.getfile(wscript.scriptfullname).copy(“c:windowssystem開始監控.vbs”)
path=”HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”
set ws=wscript.createobject(“wscript.shell”)
t=ws.regwrite(path & “IIS監控”,”c:windowssystem開始監控.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:WINDOWSsystem32inetsrviis.msc”
wscript.sleep 2000
os.sendkeys “{DOWN}”  `開啟IIS.msc之後按下 下 方向鍵
wscript.sleep 2000
os.sendkeys “{TAB}”    `然後按下 TAB 鍵
wscript.sleep 2000
os.sendkeys “{ENTER}”   `然後按下 回車  鍵
好了以上如果稍微有點VBS基礎的人都能看得懂。自己稍做修改就能用了。