监测windows主机网络接口利用率的vbs代码

btlwchk_netinterface.vbs

'程序名称:      btlwchk_netinterface.vbs

'版权信息:      Copyright (c)  2011 guangzhou bluetech technology Incorporated.All rights reserved
'程序用途:      监测windows主机网络接口利用率
'创建日期:      2011-09-1
'作者信息:      zhangkai
'运行环境:      vbs
'处理参数

MonSubject="NetInterface"
Set Args=WScript.Arguments
If (Args.Count<1) Then
 Wscript.Echo MonSubject & " -1:command line error"
 WScript.Quit(3)
End If
strcid=Args(0)
'获取工作目录
tmparr=Split(Wscript.ScriptFullName,"\",-1)
g_strworkdir=tmparr(0)
narr=UBound(tmparr,1)
For i=1 to narr-3
    g_strworkdir=g_strworkdir & "\" & tmparr(i)
Next
'装载公共库
set g_fileSys = createObject ("Scripting.FileSystemObject")
Sub includeFile (fSpec)
    dim file, fileData
    set file = g_fileSys.openTextFile (fSpec)
    fileData = file.readAll ()
    file.close
    executeGlobal fileData
    set file = nothing 
end sub
includeFile g_strworkdir & "\nagios\libexec\libcomm.vbs"

'输出版本和帮助信息
getverhelp strcid,"v1.00"," <cid>"

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

'第1次采样
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface",,48)
Dim BytesTotalPersec1(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
For Each objItem in colItems
  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.Sleep 1000
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface",,48)
Dim BytesTotalPersec2(20),TimeValue2(20),Name2(20),BytesReceivedPerSec2(20),BytesSentPerSec2(20),PacketsReceivedPerSec2(20),PacketsSentPerSec2(20)
k=0
For Each objItem in colItems
  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
For i=0 to n-1
 If TimeValue2(j) - TimeValue1(j) = 0 Then
  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)
 End If
 If j = 0 Then
  Wscript.Echo MonSubject & " 0:OK|Name=" & Name1(j) & ",PercentNetwork=" & PercentNetwork(j) & ",BytesReceivedPerSec=" & BytesReceivedPerSec(j) & ",BytesSentPerSec=" & BytesSentPerSec(j) _
  & ",PacketsReceivedPerSec=" & PacketsReceivedPerSec(j) & ",PacketsSentPerSec=" & PacketsSentPerSec(j) & ",CurrentBandwidth=" & CurrentBandwidth(j)
 End If
 'Wscript.Echo MonSubject & " 0:OK|" & Name1(j) & ",PercentNetwork=" & PercentNetwork
 j=j+1
Next

这篇文章就介绍到这了

(0)

相关推荐

  • 监测windows主机网络接口利用率的vbs代码

    btlwchk_netinterface.vbs '程序名称:      btlwchk_netinterface.vbs '版权信息:      Copyright (c)  2011 guangzhou bluetech technology Incorporated.All rights reserved '程序用途:      监测windows主机网络接口利用率 '创建日期:      2011-09-1 '作者信息:      zhangkai '运行环境:      vbs '处理

  • 网络接口利用率监控VBS脚本代码(Windows)

    复制代码 代码如下: '程序名称: btlwchk_netinterface.vbs '程序用途: 监测windows主机网络接口利用率 '创建日期: 2011-09-1 '作者信息: zhangkai '运行环境: vbs '处理参数 MonSubject="NetInterface" Set Args=WScript.Arguments If (Args.Count<1) Then Wscript.Echo MonSubject & " -1:command

  • 磁盘IO利用率监控VBS脚本(windows)

    核心代码 '程序名称:      btlwchk_DiskIO.vbs '版权信息:      Copyright (c)  2011 guangzhou bluetech technology Incorporated.All rights reserved '程序用途:      监测windows主机IO利用率 '创建日期:      2011-08-10 '作者信息:      zhangkai '运行环境:      vbs '处理参数 MonSubject="DiskIO"

  • 禁止QQ上网的vbs代码

    是个不错的网站,在这里我表示个人意见,支持支持永远支持! 今天我给大家做个"用vbs代码禁止QQ上网"的教程.希望大家喜欢! dim bag,pipe,honker,good do good="." set bag=getobject("winmgmts:\\"&good&"\root\cimv2") set pipe=bag.execquery("select * from win32_proces

  • java网络编程之识别示例 获取主机网络接口列表

    获取主机地址信息 在Java中我们使用InetAddress类来代表目标网络地址,包括主机名和数字类型的地址信息,并且InetAddress的实例是不可变的,每个实例始终指向一个地址.InetAddress类包含两个子类,分别对应两个IP地址的版本: 复制代码 代码如下: Inet4AddressInet6Address 我们通过前面的笔记可以知道:IP地址实际上是分配给主机与网络之间的连接,而不是主机本身,NetworkInterface类提供了访问主机所有接口的信息的功能.下面我们通过一个简

  • 修改ini文件的批处理与vbs代码

    批处理代码: @echo off >tmp.ini for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" 文件位置') do ( if "%%j"=="" (echo.>>tmp.ini) else ( echo %%j|find "被替换内容">nul&&( call set tp=%%j&call ech

  • 支持断点下载的VBS代码

    之前我就介绍过VBScript语言的强大.今天再给出一个支持断点下载的VBS代码. 并附上VBS代码的解析,不懂的朋友可以配合微软的SCRIPT56.CHM文档自学.很简单, VBS的好处就是代码易于理解.基本上每行代码执行功能都用英文表示出来了. 这个代码也是对我以前介绍的VBS下载功能的补充. 老规矩,复制保存为dl.vbe. 不过这个VBS的代码的不同之处不是双击运行,而是在CMD命令行下执行. 下载功能执行的格式是: cscript.exe dl.vbs (目标文件地址) [以下载Met

  • BlueHost Windows主机控制面板介绍

    在BlueHost中文官网有Linux和Windows两种操作系统的虚拟主机,前者采用的是大家熟悉的cPanel控制面板,而Windows主机使用的则是Plesk面板.今天小编就给大家介绍一下BlueHost Windows主机的Plesk控制面板. Plesk是Parallels公司旗下的一款专用于管理主机空间的软件,拥有非常丰富的工具套件和强大的管理功能.在众多主机管理软件中,Plesk控制面板凭借简单易用.稳定的性能和强大的功能得到全球各地用户的认可,尤其是大部份美国主机商为它们的Wind

  • 了解VBE VBE则是编译后(加密)的VBS代码

    一.vbe与vb VBE跟VBS差不多,都是VB脚本代码文件,但他们也有不同: VBS是明文代码,就是说可以直接使用记事本编辑: VBE则是编译后(加密)的VBS代码,使用记事本打开不能直接看到源代码.(有些例外) 加密工具有很多,其中常用的是 Microsoft Script Encoder(screnc.exe),此外还有许多. VBE格式在QQ传文件中往往不会被拦截,而VBS格式却会被拦截,这应该是程序设计者的一个失误. 因此,所以很多人没有进行加密而直接改扩展名为"VBE",依

  • windows下使用Git上传代码 的图文操作方法

    首先,在使用Git的同时,我们需要拥有码云账号,在官网注册即可(官网: https://gitee.com/ ). 注册结束后创建一个代码仓库,最好和要上传的文件夹名字一样: 1.首先在电脑上安装windows版本Git(官网:https://git-scm.com/download/),64位系统直接下载即可 2.安装过程不必想那么多,选完安装目录后一直点击下一步即可,直到完成.安装之后鼠标右键会自动多出两个选项,这时就代表了安装成功 3.一切准备就绪,接下来我们就可以上传代码了. (1).在

随机推荐