脚本名称:通过VBS脚本批量检测服务器状态
脚本语言:VBS
原创作者:易本地工作室 艾云超
官方网站:易本地工作室
授权状态:免费
功能说明:通过VBS脚本批量检测服务器状态,是否可以访问,可以自定义端口号,针对WEB可以设置CHECK的页面
使用方法:通过CSCRIPT运行该VBS脚本,后面可设置参数,参数格式 服务器IP 端口 WEB页面地址 例如:cscript.exe checkStatus.vbs 127.0.0.1 80 /index.html
脚本下载:暂不提供下载,请直接复制源码另存为VBS文件即可
脚本代码:
'on error resume next
Public WinSocket,host,port,checkpage
public sSendData
public sRevData
public M,N
public iErrCount,iTimeOut
public iAlwaysFlag,iAlwaysErr
public iStartTime
Dim objfso
Dim oArgs
Set oArgs = WScript.Arguments
host = oArgs(0)
port = oArgs(1)
checkpage=oArgs(2)
Set oArgs = Nothing
'Set objfso=CreateObject("scripting.filesystemobject")
'Set f=objfso.OpenTextFile("c:\\"+host+"_Errlog.txt",2,true)
sSendData="GET "+checkpage+" HTTP/1.1"
sSendData=sSendData+ vbcrlf+"HOST:www.xici.net"
sSendData=sSendData+ vbcrlf+"Cache-Control:no-cache"
sSendData=sSendData+ vbcrlf
sSendData=sSendData+ vbcrlf
sSendData=sSendData+ vbcrlf+"OK"
Set WinSocket=WScript.CreateObject("MSWinsock.Winsock")
WinSocket.Protocol=0
WinSocket.RemotePort=port
WinSocket.RemoteHost=host
M=0
iErrCount=0
iTimeOut=0
iAlwaysErr=0
iStartTime=now
'f.WriteLine "Start Time:"+cstr(now)
'f.WriteLine "IP Address:"+host
'f.WriteLine "Check Page:"+checkpage
'f.WriteLine "==================================="
do while (1)
M=M+1
sRevData=""
WinSocket.connect
N=1
do while(WinSocket.state<>7 and N<500)
N=N+1
WScript.sleep 10
loop
if WinSocket.state=7 then
WinSocket.senddata sSendData
N=1
do while(WinSocket.BytesReceived=0 and N<500)
N=N+1
WScript.sleep 10
loop
if (N<500 and WinSocket.state=7) THEN
WinSocket.getdata sRevData,vbString
sRevData=left(sRevData,12)
if (sRevData<>"HTTP/1.1 200") then
iErrCount=iErrCount+1
'f.WriteLine cstr(now)+" Reviced Error:"+sRevData
iAlwaysErr=iAlwaysErr+1
else
iAlwaysFlag=true
end if
WScript.Echo "HOST:"+host+" CHECKPAGE:"+checkpage
WScript.Echo "Reviced:"+sRevData+" ["+cstr(iStartTime)+"]"+"-["+cstr(now)+"]"
WScript.Echo "TIMER:"+cstr(int((now-iStartTime)*100000))+"s TOTAL:"+cstr(M)+" ERR:"+cstr(iErrCount)+"[ "+cstr(cint((iErrCount)/M*100))+"% ]"+" TIMEOUT:"+cstr(iTimeOut)+"[ "+cstr(cint((iTimeOut)/M*100))+"% ]"
else
iTimeOut=iTimeOut+1
WScript.Echo "Respond Time out!"
'f.WriteLine cstr(now)+" Timeout Error!"
end if
if (iAlwaysFlag=true) then
iAlwaysErr=0
iAlwaysFlag=false
end if
if (iAlwaysErr>=50) then
iErrCount=iErrCount-iAlwaysErr
iAlwaysErr=0
WScript.Echo "Server Error!Stop Count"
end if
else
iTimeOut=iTimeOut+1
WScript.Echo "Connect Time out!"
'f.WriteLine cstr(now)+" Timeout Error!"
end if
WinSocket.close
loop
'f.Close
WScript.quit