File: 1.00.9a/node/win32/node.vbs (View as Code)

1: ' REM FreeNATS Windows Node Bogeroo 2: ' 3: ' This file is part of FreeNATS 4: ' 5: ' FreeNATS is (C) Copyright 2008 PurplePixie Systems 6: ' 7: ' FreeNATS is free software: you can redistribute it and/or modify 8: ' it under the terms of the GNU General Public License as published by 9: ' the Free Software Foundation, either version 3 of the License, or 10: ' (at your option) any later version. 11: ' 12: ' FreeNATS is distributed in the hope that it will be useful, 13: ' but WITHOUT ANY WARRANTY; without even the implied warranty of 14: ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: ' GNU General Public License for more details. 16: ' 17: ' You should have received a copy of the GNU General Public License 18: ' along with FreeNATS. If not, see www.gnu.org/licenses 19: ' 20: ' For more information see www.purplepixie.org/freenats 21: 22: PushData=0 23: PullData=1 24: PushURL="" 25: NodeID="" 26: NodeKey="" 'for post only 27: 28: Set colNamedArguments= WScript.Arguments.Named 29: 30: If colNamedArguments.Exists("nooutput") Then 31: PullData=0 32: End If 33: If colNamedArguments.Exists("pushurl") Then 34: PushData=1 35: PushURL=colNamedArguments.Item("pushurl") 36: End If 37: If colNamedArguments.Exists("nodeid") Then 38: NodeID=colNamedArguments.Item("nodeid") 39: End If 40: If colNamedArguments.Exists("nodekey") Then 41: NodeKey=colNamedArguments.Item("nodekey") 42: End If 43: 44: OutputBuffer = "" 45: 46: OB "" 47: OB "" 48: OB "
" 49: OB " FreeNATS VBS Node XML" 50: OB " 0.03" 51: OB "
"
52: 53: 54: 55: 56: 57: 58: Function OB(text) 59: OutputBuffer = OutputBuffer & text & vbCrLf 60: End Function 61: 62: Function DumpOB() 63: Wscript.Echo OutputBuffer 64: End Function 65: 66: alloweds = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890!$%^*()[]{}?/+=-_ " 67: 68: Function SafeString(text) 69: text = Replace(text,"&","+") 70: output = "" 71: For position = 1 to Len(text) 72: character = Mid(text,position,1) 73: pos = InStr(alloweds,character) 74: If pos > 0 Then 75: output = output & character 76: Else 77: output = output & "_" 78: End If 79: Next 80: SafeString = output 81: End Function 82: 83: strComputer = "." 84: Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 85: 86: 87: set objRefresher = CreateObject("WbemScripting.Swbemrefresher") 88: Set objProcessor = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet 89: 90: Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service") 91: Set memItems = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet 92: Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") 93: 94: Set WshNetwork = WScript.CreateObject("WScript.Network") 95: AddTest "system.name","Computer Name",SafeString(WshNetwork.ComputerName),0 96: 97: 98: objRefresher.Refresh ' No I don't really get it either 99: WScript.Sleep 2000 ' but unless you do this you get even 100: objRefresher.Refresh ' weirder than usual values. 101: 102: int ServiceRunning=0 103: int Alert=0 104: For Each objService in colRunningServices 105: If objService.State = "Running" Then 106: ServiceRunning=1 107: Alert=0 108: Else 109: Alert=1 110: ServiceRunning=0 111: End If 112: TName = Replace(objService.Name," ","_") 113: TestName="srv." & SafeString(TName) 114: AddTest TestName, SafeString(objService.DisplayName) & " Service", ServiceRunning, Alert 115: Next 116: 117: 118: intThresholdViolations = 0 119: 120: 121: Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk") 122: 123: For Each objDisk in colDisks 124: 125: DiskSpace = objDisk.FreeSpace / 1024 / 1024 126: DiskSize = objDisk.Size / 1024 / 1024 127: DiskUsed = DiskSize - DiskSpace 128: DiskUsedPerc = ( DiskUsed / DiskSize ) * 100 129: DiskInDrive = 1 130: If IsNull(DiskSpace) Then 131: DiskSpace = "0" 132: DiskUsed = "0" 133: DiskUsedPerc = "0.00" 134: DiskInDrive = 0 135: End If 136: DiskSpace = Round(DiskSpace,2) 137: DiskUsed = Round(DiskUsed,2) 138: DiskUsedPerc = Round(DiskUsedPerc,2) 139: 140: alertlevel = 0 141: If DiskUsedPerc > 80 Then 142: alertlevel = 1 143: End If 144: If DiskUsedPerc > 90 Then 145: alertlevel = 2 146: End If 147: 148: 149: If DiskInDrive = 1 Then 150: TestName= "disk.free." & Left(objDisk.DeviceID,1) 151: AddTest TestName,"Space Free On " & objDisk.DeviceID & " (Mb)", DiskSpace, alertlevel 152: TestName= "disk.used." & Left(objDisk.DeviceID,1) 153: AddTest TestName,"Space Used On " & objDisk.DeviceID & " (Mb)", DiskUsed, alertlevel 154: TestName= "disk.used.perc." & Left(objDisk.DeviceID,1) 155: AddTest TestName,"Percent Disk Usage On " & objDisk.DeviceID & " (%)", DiskUsedPerc, alertlevel 156: End If 157: 158: Next 159: 160: 161: 162: For Each objItem in objProcessor 163: 164: If objItem.Name = "_Total" Then 165: AddTest "proc.load","Processor Load (%)",objItem.PercentProcessorTime,0 166: End If 167: Next 168: 169: 170: 171: For Each objOS in colOperatingSystems 172: dtmBootup = objOS.LastBootUpTime 173: dtmLastBootupTime = WMIDateStringToDate(dtmBootup) 174: dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now) 175: AddTest "uptime","Uptime (Hours)",dtmSystemUptime,0 176: Next 177: 178: Function WMIDateStringToDate(dtmBootup) 179: WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _ 180: Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _ 181: & " " & Mid (dtmBootup, 9, 2) & ":" & _ 182: Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2)) 183: End Function 184: 185: 186: 187: 188: For Each objItem in memItems 189: TestName="mem." 190: If Len(objItem.Name) > 0 Then 191: TestName = TestName & objItem.Name & "." 192: End If 193: TestName = TestName & "free" 194: 195: AddTest TestName,"Memory Available (Kilobytes)",objItem.AvailableKBytes,0 196: 197: Next 198: 199: 200: OB "" 201: 202: Function AddTest(testname,testdesc,testvalue,alertlevel) 203: OB "" 204: OB " " & testname & "" 205: OB " " & testdesc & "" 206: OB " " & testvalue & "" 207: OB " " & alertlevel & "" 208: OB "" 209: End Function 210: 211: If PullData=1 Then 212: DumpOB() 213: End If 214: 215: If PushData=1 Then 216: ' Push Da Data 217: WScript.Echo 218: WScript.Echo "Pushing Data..." 219: WScript.Echo "URL : " & PushURL 220: WScript.Echo "NodeID: " & NodeID 221: WScript.Echo "Key : " & NodeKey 222: 223: Set objHTTP = CreateObject("Microsoft.XMLHTTP") 224: objHTTP.open "POST", PushURL, False 225: 226: objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 227: http_request = "nodeid=" & Escape(NodeID) & "&nodekey=" & Escape(NodeKey) & "&xml=" & Escape(OutputBuffer) 228: objHTTP.send http_request 229: 230: response = objHTTP.responseText 231: 232: Set objHTTP = Nothing 233: 234: If Right(response,1) = "1" Then 235: WScript.Echo "Post Successful" 236: Else 237: WScript.Echo "Encountered An Error:" 238: WScript.Echo response 239: End If 240: 241: End If