From 257b6c4f2dffdb346fe765edd097d10e617cc752 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 17 Feb 2016 14:16:28 +0100 Subject: [PATCH] Pandora FMS Agent Windows inventory fixes --- .../win32/bin/util/architecture.vbs | 38 ++++++--- pandora_agents/win32/bin/util/cdromdrives.vbs | 45 ++++++---- pandora_agents/win32/bin/util/cpuinfo.vbs | 36 +++++--- pandora_agents/win32/bin/util/diskdrives.vbs | 54 +++++++----- pandora_agents/win32/bin/util/domain.vbs | 38 ++++++--- pandora_agents/win32/bin/util/ifaces.vbs | 53 +++++++----- pandora_agents/win32/bin/util/moboinfo.vbs | 36 +++++--- pandora_agents/win32/bin/util/monitors.vbs | 44 ++++++---- pandora_agents/win32/bin/util/osversion.vbs | 38 ++++++--- pandora_agents/win32/bin/util/printers.vbs | 85 ++++++++++++------- pandora_agents/win32/bin/util/productID.vbs | 17 ++-- pandora_agents/win32/bin/util/productkey.vbs | 38 ++++++--- pandora_agents/win32/bin/util/raminfo.vbs | 42 +++++---- .../win32/bin/util/videocardinfo.vbs | 44 ++++++---- 14 files changed, 376 insertions(+), 232 deletions(-) diff --git a/pandora_agents/win32/bin/util/architecture.vbs b/pandora_agents/win32/bin/util/architecture.vbs index 7a075979a9..e2993faeb9 100644 --- a/pandora_agents/win32/bin/util/architecture.vbs +++ b/pandora_agents/win32/bin/util/architecture.vbs @@ -2,24 +2,34 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI architecture - -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Architecture</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set cols = objWMIService.ExecQuery("Select osarchitecture from Win32_OperatingSystem") -For Each data In cols - Wscript.StdOut.WriteLine "<data><![CDATA[" & data.osarchitecture & "]]></data>" -Next +on error resume next +flag = cols.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Architecture</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each data In cols + Wscript.StdOut.WriteLine "<data><![CDATA[" & data.osarchitecture & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/cdromdrives.vbs b/pandora_agents/win32/bin/util/cdromdrives.vbs index fc73a2bd32..f728dd5daf 100644 --- a/pandora_agents/win32/bin/util/cdromdrives.vbs +++ b/pandora_agents/win32/bin/util/cdromdrives.vbs @@ -2,28 +2,39 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI CD_ROM_drives_info -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>CDROM</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colCDROMDrives = objWMIService.ExecQuery("Select caption,description,drive,deviceid from win32_CDROMDrive") -For Each cdromd In colCDROMDrives - Wscript.StdOut.WriteLine "<data><![CDATA[" & cdromd.caption _ - & ";" & cdromd.description _ - & ";" & cdromd.drive _ - & ";" & cdromd.deviceid _ - & "]]></data>" -Next +on error resume next +flag = colCDROMDrives.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>CDROM</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each cdromd In colCDROMDrives + Wscript.StdOut.WriteLine "<data><![CDATA[" & cdromd.caption _ + & ";" & cdromd.description _ + & ";" & cdromd.drive _ + & ";" & cdromd.deviceid _ + & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" + +End If \ No newline at end of file diff --git a/pandora_agents/win32/bin/util/cpuinfo.vbs b/pandora_agents/win32/bin/util/cpuinfo.vbs index 219ca229ed..a8268c28ca 100644 --- a/pandora_agents/win32/bin/util/cpuinfo.vbs +++ b/pandora_agents/win32/bin/util/cpuinfo.vbs @@ -2,24 +2,34 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI cpuinfo -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>CPU</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colCPUs = objWMIService.ExecQuery("Select name,maxclockspeed,caption from Win32_Processor") -For Each cpu In colCPUs - Wscript.StdOut.WriteLine "<data><![CDATA[" & cpu.name & ";" & cpu.maxclockspeed & " MHz;" & cpu.caption & "]]></data>" -Next +on error resume next +flag = colCPUs.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>CPU</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each cpu In colCPUs + Wscript.StdOut.WriteLine "<data><![CDATA[" & cpu.name & ";" & cpu.maxclockspeed & " MHz;" & cpu.caption & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/diskdrives.vbs b/pandora_agents/win32/bin/util/diskdrives.vbs index 57ec380b6e..4ab477aa52 100644 --- a/pandora_agents/win32/bin/util/diskdrives.vbs +++ b/pandora_agents/win32/bin/util/diskdrives.vbs @@ -2,33 +2,43 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI disksinfo -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>HD</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colHDDs = objWMIService.ExecQuery("Select * from win32_diskdrive") -For Each disco In colHDDs - If ((not IsNull(disco.size)) AND (disco.size > 0)) then - Wscript.StdOut.Write "<data><![CDATA[" & disco.caption _ - & ";" & Abs(Round((disco.size/(1024*1024*1024)),2)) & " GB" - If (not IsNull(disco.serialnumber)) then - Wscript.StdOut.Write ";" & disco.serialnumber - Else - Wscript.StdOut.Write ";" & disco.signature +on error resume next +flag = colHDDs.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 + +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>HD</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each disco In colHDDs + If ((not IsNull(disco.size)) AND (disco.size > 0)) then + Wscript.StdOut.Write "<data><![CDATA[" & disco.caption _ + & ";" & Abs(Round((disco.size/(1024*1024*1024)),2)) & " GB" + If (not IsNull(disco.serialnumber)) then + Wscript.StdOut.Write ";" & disco.serialnumber + Else + Wscript.StdOut.Write ";" & disco.signature + End If + Wscript.StdOut.WriteLine "]]></data>" End If - Wscript.StdOut.WriteLine "]]></data>" - End If -Next - -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" + Next + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/domain.vbs b/pandora_agents/win32/bin/util/domain.vbs index 6cd612cc9c..12d6e52209 100644 --- a/pandora_agents/win32/bin/util/domain.vbs +++ b/pandora_agents/win32/bin/util/domain.vbs @@ -2,24 +2,34 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI domain/workgroup info - -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Domain</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT Domain FROM Win32_ComputerSystem") -For Each objItem In colItems - WScript.StdOut.WriteLine "<data><![CDATA[" & objItem.Domain & "]]></data>" -Next +on error resume next +flag = colItems.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Domain</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each objItem In colItems + WScript.StdOut.WriteLine "<data><![CDATA[" & objItem.Domain & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If \ No newline at end of file diff --git a/pandora_agents/win32/bin/util/ifaces.vbs b/pandora_agents/win32/bin/util/ifaces.vbs index d08d23bc5e..e4265c9bd2 100644 --- a/pandora_agents/win32/bin/util/ifaces.vbs +++ b/pandora_agents/win32/bin/util/ifaces.vbs @@ -2,7 +2,6 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI real interfaces info ' exlusions: ' VBox network interfaces @@ -10,12 +9,6 @@ on error resume next ' 'nic where "guid is not null and not PNPDeviceID like 'ROOT%'" -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>NIC</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter " & _ @@ -24,19 +17,37 @@ Set colAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter " "and not ServiceName is null " & _ "and not ServiceName like 'vwifimp' ") -For Each iface In colAdapters -' return model MACAddress IPAddress +on error resume next +flag = colAdapters.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 - set ifaces_cfg = objWMIService.ExecQuery("Select ipaddress from Win32_NetworkAdapterConfiguration Where Caption='" & iface.caption & "'") - Wscript.StdOut.Write "<data><![CDATA[" & iface.ProductName & ";" & iface.MACAddress & ";" - for each iface_cfg in ifaces_cfg - if ( iface_cfg.IPAddress(0) <> "" ) then - Wscript.StdOut.Write trim(iface_cfg.IPAddress(0)) - end if - next - wscript.stdOut.WriteLine "]]></data>" -Next +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>NIC</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" + For Each iface In colAdapters + ' return model MACAddress IPAddress + + set ifaces_cfg = objWMIService.ExecQuery("Select ipaddress from Win32_NetworkAdapterConfiguration Where Caption='" & iface.caption & "'") + Wscript.StdOut.Write "<data><![CDATA[" & iface.ProductName & ";" & iface.MACAddress & ";" + for each iface_cfg in ifaces_cfg + if ( iface_cfg.IPAddress(0) <> "" ) then + Wscript.StdOut.Write trim(iface_cfg.IPAddress(0)) + end if + next + wscript.stdOut.WriteLine "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If \ No newline at end of file diff --git a/pandora_agents/win32/bin/util/moboinfo.vbs b/pandora_agents/win32/bin/util/moboinfo.vbs index 5557d894c0..c22ec0cfda 100644 --- a/pandora_agents/win32/bin/util/moboinfo.vbs +++ b/pandora_agents/win32/bin/util/moboinfo.vbs @@ -2,25 +2,35 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI mobo info -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Motherboard</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 'Set colMobos = objWMIService.ExecQuery("Select name,product,manufacturer from Win32_baseboard") Set colMobos2 = objWMIService.ExecQuery("Select manufacturer,model,OEMStringArray from Win32_computersystem") -For Each mobo In colMobos2 - Wscript.StdOut.WriteLine "<data><![CDATA[" & mobo.manufacturer & ";" & mobo.model & ";" & mobo.OEMStringArray(0) & "]]></data>" -Next +on error resume next +flag = colItems.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Motherboard</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each mobo In colMobos2 + Wscript.StdOut.WriteLine "<data><![CDATA[" & mobo.manufacturer & ";" & mobo.model & ";" & mobo.OEMStringArray(0) & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/monitors.vbs b/pandora_agents/win32/bin/util/monitors.vbs index 7655d18328..89ca24ad02 100644 --- a/pandora_agents/win32/bin/util/monitors.vbs +++ b/pandora_agents/win32/bin/util/monitors.vbs @@ -2,28 +2,38 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI monitorsinfo -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Monitors</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colDisplays = objWMIService.ExecQuery("Select caption,pnpdeviceid from win32_desktopmonitor") -For Each display In colDisplays - if (NOT isNull(display.pnpdeviceid)) then - Wscript.StdOut.WriteLine "<data><![CDATA[" & display.caption _ - & ";" & display.pnpdeviceid _ - & "]]></data>" - end if -Next +on error resume next +flag = colDisplays.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Monitors</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each display In colDisplays + if (NOT isNull(display.pnpdeviceid)) then + Wscript.StdOut.WriteLine "<data><![CDATA[" & display.caption _ + & ";" & display.pnpdeviceid _ + & "]]></data>" + end if + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/osversion.vbs b/pandora_agents/win32/bin/util/osversion.vbs index c44734748a..6289754c45 100644 --- a/pandora_agents/win32/bin/util/osversion.vbs +++ b/pandora_agents/win32/bin/util/osversion.vbs @@ -2,24 +2,34 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI OS version - -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>OSVersion</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set cols = objWMIService.ExecQuery("SELECT version from win32_operatingsystem") -For Each data In cols - Wscript.StdOut.WriteLine "<data><![CDATA[" & data.version & "]]></data>" -Next +on error resume next +flag = cols.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>OSVersion</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each data In cols + Wscript.StdOut.WriteLine "<data><![CDATA[" & data.version & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If \ No newline at end of file diff --git a/pandora_agents/win32/bin/util/printers.vbs b/pandora_agents/win32/bin/util/printers.vbs index c664ca33b5..bf8d9107b9 100644 --- a/pandora_agents/win32/bin/util/printers.vbs +++ b/pandora_agents/win32/bin/util/printers.vbs @@ -2,16 +2,8 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -On Error Resume Next - 'WMI printers attached -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Printers</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - function validPort(port) if strComp(port,"SHRFAX:") = 0 then validPort = false @@ -31,29 +23,58 @@ end function Set oWMI = GetObject("winmgmts:\\" & "." & "\root\cimv2") Set colPrinters = oWMI.ExecQuery("Select * from Win32_Printer",,48) -For Each objPrinter in colPrinters - if validPort (objPrinter.PortName) then - set tcp_port_exists = 0 - WScript.stdOut.Write "<data><![CDATA[" & _ - objPrinter.DeviceID & ";" & _ - objPrinter.DriverName & ";" - If (objPrinter.Local) Then - Set colPorts = oWMI.ExecQuery("Select HostAddress from Win32_TCPIPPrinterPort where Name like '" & objPrinter.PortName & "'",,48) - For Each objPort in colPorts - tcp_port_exists = 1 - Wscript.stdOut.Write objPort.HostAddress - Next - If (tcp_port_exists = 0) Then - Wscript.stdOut.Write objPrinter.PortName +on error resume next +flag = colPrinters.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 + +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Printers</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each objPrinter in colPrinters + if validPort (objPrinter.PortName) then + set tcp_port_exists = 0 + WScript.stdOut.Write "<data><![CDATA[" & _ + objPrinter.DeviceID & ";" & _ + objPrinter.DriverName & ";" + If (objPrinter.Local) Then + Set colPorts = oWMI.ExecQuery("Select HostAddress from Win32_TCPIPPrinterPort where Name like '" & objPrinter.PortName & "'",,48) + on error resume next + flag = colPorts.Count + If (err.number <> 0) Then + flag = true + Else + flag = false + End If + on error goto 0 + + 'Print only when there's results + If (NOT flag) Then + For Each objPort in colPorts + tcp_port_exists = 1 + Wscript.stdOut.Write objPort.HostAddress + Next + End If + If (tcp_port_exists = 0) Then + Wscript.stdOut.Write objPrinter.PortName + End If + Else + Wscript.stdOut.Write objPrinter.ServerName End If - Else - Wscript.stdOut.Write objPrinter.ServerName - End If - wscript.stdOut.WriteLine "]]></data>" - end if -Next + wscript.stdOut.WriteLine "]]></data>" + end if + Next - -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/productID.vbs b/pandora_agents/win32/bin/util/productID.vbs index f25376ef29..b019f8a37a 100644 --- a/pandora_agents/win32/bin/util/productID.vbs +++ b/pandora_agents/win32/bin/util/productID.vbs @@ -3,21 +3,20 @@ ' (c) 2015 Sancho Lerena <slerena@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' ---------------------------------------------------------------- -on error resume next + +Set oShell = WScript.CreateObject ("WScript.Shell") +Set objExec = oShell.Exec("cmd.exe /C wmic os get ""SerialNumber"" | find /v ""SerialNumber"" ") + +Do + line = objExec.StdOut.ReadLine() + s = s & line +Loop While Not objExec.Stdout.atEndOfStream Wscript.StdOut.WriteLine "<inventory>" Wscript.StdOut.WriteLine "<inventory_module>" Wscript.StdOut.WriteLine "<name>product_ID</name>" Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" Wscript.StdOut.WriteLine "<datalist>" - -Set oShell = WScript.CreateObject ("WScript.Shell") -Set objExec = oShell.Exec("cmd.exe /C wmic os get ""SerialNumber"" | find /v ""SerialNumber"" ") -Do - line = objExec.StdOut.ReadLine() - s = s & line -Loop While Not objExec.Stdout.atEndOfStream - Wscript.StdOut.WriteLine "<data><![CDATA[" & Replace(Replace(s, chr(013), ""), chr(010), "") & "]]></data>" Wscript.StdOut.WriteLine "</datalist>" Wscript.StdOut.WriteLine "</inventory_module>" diff --git a/pandora_agents/win32/bin/util/productkey.vbs b/pandora_agents/win32/bin/util/productkey.vbs index 39eb490f5d..4e2409a514 100644 --- a/pandora_agents/win32/bin/util/productkey.vbs +++ b/pandora_agents/win32/bin/util/productkey.vbs @@ -4,22 +4,32 @@ ' This plugin extends agent inventory feature. Only enterprise version ' ---------------------------------------------------------------- -on error resume next - -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>product_key</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProducts = objWMIService.ExecQuery("Select OA3xOriginalProductKey from SoftwareLicensingService") -For Each product In colProducts - Wscript.StdOut.WriteLine "<data><![CDATA[" & product.OA3xOriginalProductKey & "]]></data>" -Next +on error resume next +flag = colProducts.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>product_key</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + + For Each product In colProducts + Wscript.StdOut.WriteLine "<data><![CDATA[" & product.OA3xOriginalProductKey & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If \ No newline at end of file diff --git a/pandora_agents/win32/bin/util/raminfo.vbs b/pandora_agents/win32/bin/util/raminfo.vbs index 8750346314..4409910919 100644 --- a/pandora_agents/win32/bin/util/raminfo.vbs +++ b/pandora_agents/win32/bin/util/raminfo.vbs @@ -2,27 +2,37 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI raminfo -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>RAM</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colRAMs = objWMIService.ExecQuery("Select deviceLocator,capacity,speed from Win32_PhysicalMemory") -For Each ram In colRAMs - Wscript.StdOut.WriteLine "<data><![CDATA[" & ram.deviceLocator _ - & ";" & Abs(Round((ram.capacity/(1024*1024)),2)) & " MB" _ - & ";" & ram.speed & " MHz"_ - & "]]></data>" -Next +on error resume next +flag = colRAMs.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>RAM</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each ram In colRAMs + Wscript.StdOut.WriteLine "<data><![CDATA[" & ram.deviceLocator _ + & ";" & Abs(Round((ram.capacity/(1024*1024)),2)) & " MB" _ + & ";" & ram.speed & " MHz"_ + & "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If diff --git a/pandora_agents/win32/bin/util/videocardinfo.vbs b/pandora_agents/win32/bin/util/videocardinfo.vbs index 720389f4c7..b99797237c 100644 --- a/pandora_agents/win32/bin/util/videocardinfo.vbs +++ b/pandora_agents/win32/bin/util/videocardinfo.vbs @@ -2,27 +2,39 @@ ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- -on error resume next 'WMI video_card_info -Wscript.StdOut.WriteLine "<inventory>" -Wscript.StdOut.WriteLine "<inventory_module>" -Wscript.StdOut.WriteLine "<name>Video</name>" -Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" -Wscript.StdOut.WriteLine "<datalist>" - strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colVideoCards = objWMIService.ExecQuery("Select caption,AdapterRAM,PNPDeviceID from win32_videocontroller") -For Each vcard In colVideoCards - Wscript.StdOut.WriteLine "<data><![CDATA[" & vcard.caption _ - & ";" & Round(Abs(vcard.AdapterRAM/(1024*1024)),2) & " MB" _ - & ";" & vcard.PNPDeviceID _ - & "]]></data>" -Next +on error resume next +flag = colVideoCards.Count +If (err.number <> 0) Then + flag = true +Else + flag = false +End If +on error goto 0 -Wscript.StdOut.WriteLine "</datalist>" -Wscript.StdOut.WriteLine "</inventory_module>" -Wscript.StdOut.WriteLine "</inventory>" +'Print only when there's results +If (NOT flag) Then + Wscript.StdOut.WriteLine "<inventory>" + Wscript.StdOut.WriteLine "<inventory_module>" + Wscript.StdOut.WriteLine "<name>Video</name>" + Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" + Wscript.StdOut.WriteLine "<datalist>" + For Each vcard In colVideoCards + Wscript.StdOut.Write "<data><![CDATA[" & vcard.caption & ";" + on error resume next + Wscript.StdOut.Write Round(Abs(vcard.AdapterRAM/(1024*1024)),2) & " MB" + on error goto 0 + Wscript.StdOut.Write ";" & vcard.PNPDeviceID + Wscript.StdOut.WriteLine "]]></data>" + Next + + Wscript.StdOut.WriteLine "</datalist>" + Wscript.StdOut.WriteLine "</inventory_module>" + Wscript.StdOut.WriteLine "</inventory>" +End If