监测windows主机网络接口利用率的vbs代码
btlwchk_netinterface.vbs
'程序名称: btlwchk_netinterface.vbs
'版权信息: Copyright(c) 2011guangzhoubluetechtechnologyIncorporated.Allrightsreserved
'程序用途: 监测windows主机网络接口利用率
'创建日期: 2011-09-1
'作者信息: zhangkai
'运行环境: vbs
'处理参数
MonSubject="NetInterface"
SetArgs=WScript.Arguments
If(Args.Count<1)Then
Wscript.EchoMonSubject&"-1:commandlineerror"
WScript.Quit(3)
EndIf
strcid=Args(0)
'获取工作目录
tmparr=Split(Wscript.ScriptFullName,"\",-1)
g_strworkdir=tmparr(0)
narr=UBound(tmparr,1)
Fori=1tonarr-3
g_strworkdir=g_strworkdir&"\"&tmparr(i)
Next
'装载公共库
setg_fileSys=createObject("Scripting.FileSystemObject")
SubincludeFile(fSpec)
dimfile,fileData
setfile=g_fileSys.openTextFile(fSpec)
fileData=file.readAll()
file.close
executeGlobalfileData
setfile=nothing
endsub
includeFileg_strworkdir&"\nagios\libexec\libcomm.vbs"
'输出版本和帮助信息
getverhelpstrcid,"v1.00",""
strComputer="."
SetobjWMIService=GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\"&strComputer&"\root\cimv2")
'第1次采样
SetcolItems=objWMIService.ExecQuery("Select*fromWin32_PerfRawData_Tcpip_NetworkInterface",,48)
DimBytesTotalPersec1(20),TimeValue1(20),Name1(20),CurrentBandwidth(20),BytesReceivedPerSec1(20),BytesSentPerSec1(20),PacketsReceivedPerSec1(20),PacketsSentPerSec1(20),_
BytesTotalPersec(20),PercentNetwork(20),BytesReceivedPerSec(20),BytesSentPerSec(20),PacketsReceivedPerSec(20),PacketsSentPerSec(20)
n=0
ForEachobjItemincolItems
Name1(n)=objItem.Name
BytesTotalPersec1(n)=objItem.BytesTotalPersec
BytesReceivedPerSec1(n)=objItem.BytesReceivedPerSec
BytesSentPerSec1(n)=objItem.BytesSentPerSec
PacketsReceivedPerSec1(n)=objItem.PacketsReceivedPerSec
PacketsSentPerSec1(n)=objItem.PacketsSentPerSec
TimeValue1(n)=objItem.Timestamp_PerfTime
CurrentBandwidth(n)=objItem.CurrentBandwidth
TimeBase=objItem.Frequency_PerfTime
n=n+1
Next
'第2次采样
WScript.Sleep1000
SetcolItems=objWMIService.ExecQuery("Select*fromWin32_PerfRawData_Tcpip_NetworkInterface",,48)
DimBytesTotalPersec2(20),TimeValue2(20),Name2(20),BytesReceivedPerSec2(20),BytesSentPerSec2(20),PacketsReceivedPerSec2(20),PacketsSentPerSec2(20)
k=0
ForEachobjItemincolItems
Name2(k)=objItem.Name
BytesTotalPersec2(k)=objItem.BytesTotalPersec
BytesReceivedPerSec2(k)=objItem.BytesReceivedPerSec
BytesSentPerSec2(k)=objItem.BytesSentPerSec
PacketsReceivedPerSec2(k)=objItem.PacketsReceivedPerSec
PacketsSentPerSec2(k)=objItem.PacketsSentPerSec
TimeValue2(k)=objItem.Timestamp_PerfTime
k=k+1
Next
j=0
Fori=0ton-1
IfTimeValue2(j)-TimeValue1(j)=0Then
strnetwork="BytesTotalPersec=0"
Else
'带宽利用率=(BytesReceivedPerSec+BytesSentPerSec)*8*100/CurrentBandwidth
'计算利用率
BytesTotalPersec(j)=(BytesTotalPersec2(j)-BytesTotalPersec1(j))/((TimeValue2(j)-TimeValue1(j))/TimeBase)
PercentNetwork(j)=BytesTotalPersec(j)*8*100/CurrentBandwidth(j)
PercentNetwork(j)=round(PercentNetwork(j),2)
'计算BytesReceivedPerSec
BytesReceivedPerSec(j)=(BytesReceivedPerSec2(j)-BytesReceivedPerSec1(j))/((TimeValue2(j)-TimeValue1(j))/TimeBase)/1024
BytesReceivedPerSec(j)=round(BytesReceivedPerSec(j),2)
'计算BytesSentPerSec
BytesSentPerSec(j)=(BytesSentPerSec2(j)-BytesSentPerSec1(j))/((TimeValue2(j)-TimeValue1(j))/TimeBase)/1024
BytesSentPerSec(j)=round(BytesSentPerSec(j),2)
'计算PacketsReceivedPerSec
PacketsReceivedPerSec(j)=(PacketsReceivedPerSec2(j)-PacketsReceivedPerSec1(j))/((TimeValue2(j)-TimeValue1(j))/TimeBase)
PacketsReceivedPerSec(j)=round(PacketsReceivedPerSec(j),2)
'计算PacketsSentPerSec
PacketsSentPerSec(j)=(PacketsSentPerSec2(j)-PacketsSentPerSec1(j))/((TimeValue2(j)-TimeValue1(j))/TimeBase)
PacketsSentPerSec(j)=round(PacketsSentPerSec(j),2)
'计算CurrentBandwidth
CurrentBandwidth(j)=CInt(CurrentBandwidth(j)/1000/1000)
EndIf
Ifj=0Then
Wscript.EchoMonSubject&"0:OK|Name="&Name1(j)&",PercentNetwork="&PercentNetwork(j)&",BytesReceivedPerSec="&BytesReceivedPerSec(j)&",BytesSentPerSec="&BytesSentPerSec(j)_
&",PacketsReceivedPerSec="&PacketsReceivedPerSec(j)&",PacketsSentPerSec="&PacketsSentPerSec(j)&",CurrentBandwidth="&CurrentBandwidth(j)
EndIf
'Wscript.EchoMonSubject&"0:OK|"&Name1(j)&",PercentNetwork="&PercentNetwork
j=j+1
Next
这篇文章就介绍到这了