监测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
这篇文章就介绍到这了