' Pandora FMS Agent Inventory Plugin for Microsoft Windows (All platfforms) ' (c) 2015 Borja Sanchez <fborja.sanchez@artica.es> ' This plugin extends agent inventory feature. Only enterprise version ' -------------------------------------------------------------------------- on error resume next ' Lista todos los usuarios del equipo que han iniciado procesos dim loggedUsers(),i i=0 Sub insertIfNotExists(sDomain,sUser) For Each lUser in loggedUsers If StrComp(sDomain & "\" & sUser, lUser) = 0 Then Exit Sub End If Next redim preserve loggedUsers(i) i=i+1 loggedUsers (i-1)=sDomain & "\" & sUser End Sub Function CheckRealUser(sHost, sUser, sDomain) Dim oWMI,realUsers Set oWmi = GetObject("winmgmts:{impersonationLevel=impersonate,(debug)}!\\" _ & sHost & "\root\cimv2") Set realUsers = oWmi.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Domain='" & sDomain & "' OR Name='" & sUser & "'") If (realUsers.count=0) Then CheckRealUser = False Else CheckRealUser = True End If End Function Function ConsoleUser(sHost) Dim oWMI, colProc, oProcess, strUser, strDomain Set oWmi = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(debug)}!\\" _ & sHost & "\root\cimv2") Set colProc = oWmi.ExecQuery("Select sessionID from Win32_Process") ConsoleUser = "" For Each oProcess In colProc lRet = oProcess.getOwner(strOwner, strDomain) If (lRet = 0) AND (CheckRealUser(sHost,strOwner,strDomain)) Then insertIfNotExists strDomain,strOwner ConsoleUser = sUser End If Next End Function ' MAIN sUser = ConsoleUser(".") ' use "." for local computer Wscript.StdOut.WriteLine "<inventory>" Wscript.StdOut.WriteLine "<inventory_module>" Wscript.StdOut.WriteLine "<name>Users</name>" Wscript.StdOut.WriteLine "<type><![CDATA[generic_data_string]]></type>" Wscript.StdOut.WriteLine "<datalist>" For Each usuario in loggedUsers Wscript.StdOut.WriteLine "<data><![CDATA[" & split(usuario,"\")(0) _ & ";" & split(usuario,"\")(1) _ & "]]></data>" next Wscript.StdOut.WriteLine "</datalist>" Wscript.StdOut.WriteLine "</inventory_module>" Wscript.StdOut.WriteLine "</inventory>"