经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
监测windows主机网络接口利用率的vbs代码
来源:jb51  时间:2019/10/24 9:03:10  对本文有异议

btlwchk_netinterface.vbs

  1. '程序名称:      btlwchk_netinterface.vbs
  2.  
  3. '版权信息:      Copyright (c)  2011 guangzhou bluetech technology Incorporated.All rights reserved
  4. '程序用途:      监测windows主机网络接口利用率
  5. '创建日期:      2011-09-1
  6. '作者信息:      zhangkai
  7. '运行环境:      vbs
  8. '处理参数
  9.  
  10. MonSubject="NetInterface"
  11. Set Args=WScript.Arguments
  12. If (Args.Count<1) Then
  13.  Wscript.Echo MonSubject & " -1:command line error"
  14.  WScript.Quit(3)
  15. End If
  16. strcid=Args(0)
  17. '获取工作目录
  18. tmparr=Split(Wscript.ScriptFullName,"\",-1)
  19. g_strworkdir=tmparr(0)
  20. narr=UBound(tmparr,1)
  21. For i=1 to narr-3
  22.     g_strworkdir=g_strworkdir & "\" & tmparr(i)
  23. Next
  24. '装载公共库
  25. set g_fileSys = createObject ("Scripting.FileSystemObject")
  26. Sub includeFile (fSpec)
  27.     dim file, fileData
  28.     set file = g_fileSys.openTextFile (fSpec)
  29.     fileData = file.readAll ()
  30.     file.close
  31.     executeGlobal fileData
  32.     set file = nothing 
  33. end sub
  34. includeFile g_strworkdir & "\nagios\libexec\libcomm.vbs"
  35.  
  36.  
  37. '输出版本和帮助信息
  38. getverhelp strcid,"v1.00"," <cid>"
  39.  
  40. strComputer = "."  
  41. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
  42.  
  43. '第1次采样
  44. Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface",,48)
  45. Dim BytesTotalPersec1(20),TimeValue1(20),Name1(20),CurrentBandwidth(20),BytesReceivedPerSec1(20),BytesSentPerSec1(20),PacketsReceivedPerSec1(20),PacketsSentPerSec1(20),_
  46. BytesTotalPersec(20),PercentNetwork(20),BytesReceivedPerSec(20),BytesSentPerSec(20),PacketsReceivedPerSec(20),PacketsSentPerSec(20)
  47. n=0
  48. For Each objItem in colItems
  49.   Name1(n) = objItem.Name
  50.   BytesTotalPersec1(n) = objItem.BytesTotalPersec
  51.   BytesReceivedPerSec1(n) = objItem.BytesReceivedPerSec
  52.   BytesSentPerSec1(n) = objItem.BytesSentPerSec
  53.   PacketsReceivedPerSec1(n) = objItem.PacketsReceivedPerSec
  54.   PacketsSentPerSec1(n) = objItem.PacketsSentPerSec
  55.   TimeValue1(n) = objItem.Timestamp_PerfTime
  56.   CurrentBandwidth(n) = objItem.CurrentBandwidth
  57.   TimeBase = objItem.Frequency_PerfTime
  58.   n=n+1
  59. Next
  60.  
  61. '2次采样
  62. WScript.Sleep 1000
  63. Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface",,48)
  64. Dim BytesTotalPersec2(20),TimeValue2(20),Name2(20),BytesReceivedPerSec2(20),BytesSentPerSec2(20),PacketsReceivedPerSec2(20),PacketsSentPerSec2(20)
  65. k=0
  66. For Each objItem in colItems
  67.   Name2(k) = objItem.Name
  68.      BytesTotalPersec2(k) = objItem.BytesTotalPersec
  69.   BytesReceivedPerSec2(k) = objItem.BytesReceivedPerSec
  70.   BytesSentPerSec2(k) = objItem.BytesSentPerSec
  71.   PacketsReceivedPerSec2(k) = objItem.PacketsReceivedPerSec
  72.   PacketsSentPerSec2(k) = objItem.PacketsSentPerSec
  73.   TimeValue2(k) = objItem.Timestamp_PerfTime
  74.   k=k+1
  75. Next
  76.  
  77. j=0
  78. For i=0 to n-1
  79.  If TimeValue2(j) - TimeValue1(j) = 0 Then
  80.   strnetwork = "BytesTotalPersec=0"
  81.  Else
  82.   '带宽利用率= (BytesReceivedPerSec + BytesSentPerSec)*8*100/ CurrentBandwidth
  83.   '计算利用率
  84.   BytesTotalPersec(j) = (BytesTotalPersec2(j) - BytesTotalPersec1(j)) / ((TimeValue2(j) - TimeValue1(j)) / TimeBase)
  85.   PercentNetwork(j) = BytesTotalPersec(j)*8*100 / CurrentBandwidth(j)
  86.   PercentNetwork(j) = round(PercentNetwork(j),2)
  87.   
  88.   '计算BytesReceivedPerSec
  89.   BytesReceivedPerSec(j) = (BytesReceivedPerSec2(j) - BytesReceivedPerSec1(j)) / ((TimeValue2(j) - TimeValue1(j)) / TimeBase)/1024
  90.   BytesReceivedPerSec(j) = round(BytesReceivedPerSec(j),2)
  91.   
  92.   '计算BytesSentPerSec
  93.   BytesSentPerSec(j) = (BytesSentPerSec2(j) - BytesSentPerSec1(j)) / ((TimeValue2(j) - TimeValue1(j)) / TimeBase)/1024
  94.   BytesSentPerSec(j) = round(BytesSentPerSec(j),2)
  95.   
  96.   '计算PacketsReceivedPerSec
  97.   PacketsReceivedPerSec(j) = (PacketsReceivedPerSec2(j) - PacketsReceivedPerSec1(j)) / ((TimeValue2(j) - TimeValue1(j)) / TimeBase)
  98.   PacketsReceivedPerSec(j) = round(PacketsReceivedPerSec(j),2)
  99.   
  100.   '计算PacketsSentPerSec
  101.   PacketsSentPerSec(j) = (PacketsSentPerSec2(j) - PacketsSentPerSec1(j)) / ((TimeValue2(j) - TimeValue1(j)) / TimeBase)
  102.   PacketsSentPerSec(j) = round(PacketsSentPerSec(j),2)
  103.   
  104.   '计算CurrentBandwidth
  105.   CurrentBandwidth(j) = CInt(CurrentBandwidth(j)/1000/1000)
  106.  End If
  107.  If j = 0 Then
  108.   Wscript.Echo MonSubject & " 0:OK|Name=" & Name1(j) & ",PercentNetwork=" & PercentNetwork(j) & ",BytesReceivedPerSec=" & BytesReceivedPerSec(j) & ",BytesSentPerSec=" & BytesSentPerSec(j) _
  109.   & ",PacketsReceivedPerSec=" & PacketsReceivedPerSec(j) & ",PacketsSentPerSec=" & PacketsSentPerSec(j) & ",CurrentBandwidth=" & CurrentBandwidth(j)
  110.  End If
  111.  'Wscript.Echo MonSubject & " 0:OK|" & Name1(j) & ",PercentNetwork=" & PercentNetwork
  112.  j=j+1
  113. Next

这篇文章就介绍到这了

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号