天天看點

腳本+批處理打造IIS監控器

首先說下我什麼要寫它,第一、它可以幫你做一件事,那就是随時給你監控你公司的網站伺服器的狀态,一旦你的網站出現問題不能通路了,它就會自動幫你重新開機IIS然後讓死掉的網站活起來。第二、如果你公司的網站在你休假或者放假的日子裡出了問題無法通路,它至少可以給你重新開機下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}"

os.sendkeys "{TAB}"

os.sendkeys "{ENTER}"

os.sendkeys "%a"

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"

os.sendkeys "{DOWN}"  '打開IIS.msc之後按下 下 方向鍵

os.sendkeys "{TAB}"    '然後按下 TAB 鍵

os.sendkeys "{ENTER}"   '然後按下 回車  鍵

好了以上如果稍微有點VBS基礎的人都能看得懂。自己稍做修改就能用了。

繼續閱讀