Description:
List all Users accounts by groups
alerts when new user has change in admin .
Note:
Run as Local System User
#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
input_user=itsm.getParameter("username")#"OMY"
import os
import ctypes
from subprocess import PIPE,Popen
import sys
class disable_file_system_redirection:
_disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
_revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
def __enter__(self):
self.old_value = ctypes.c_long()
self.success = self._disable(ctypes.byref(self.old_value))
def __exit__(self, type, value, traceback):
if self.success:
self._revert(self.old_value)
def alert(arg):
sys.stderr.write("%d%d%d" % (arg, arg, arg))
with disable_file_system_redirection():
process=Popen("net localgroup",stdout=PIPE,stdin=PIPE)
r,e=process.communicate()
# if e:
# print e
# else:
# print r
process2=Popen("net user /domain",stdout=PIPE,stdin=PIPE)
r2,e2=process2.communicate()
# if e2:
# print e2
# else:
# print r2
if r2:
fl=[]
Domain_list=[i.strip() for i in r2.split()[17:-4]]
for i in Domain_list:
if i!='Administrator' and i!='Guest':
fl.append(i)
#print fl
ls1=dict()
ls1["Domain Users"]=fl
#print ls1
q=os.popen('systeminfo | findstr /B /C:"Domain"','r').read()
domainname=q.split()[-1].strip().split('.')[0].upper()
#print domainname
p=os.popen('net localgroup Administrators','r')
adminusers=p.read().splitlines()[6:-2]
d_admins=[]
for i in adminusers:
if domainname in i:
d_admins.append(i)
#print d_admins
ls2=dict()
ls2["Domain Admins"]=d_admins
if r:
LocalGroup_list= [i.strip().replace("*",'') for i in r.splitlines()[4:-2]]
ls=dict()
for i in LocalGroup_list:
out=os.popen('net localgroup "%s"'%i).read()
#print out
Users=out.splitlines()[6:-2]
#print i
#print Users
ls_i=[]
#print i
if Users:
for j in Users:
ls_i.append(j)
#else:
# ls_i.append("No Users")
#print i
#print ls_i
ls[i]=ls_i
import json
import collections
print "System Name : "+os.popen("hostname").read()
print "Domain Admins"
print ls2
print "Domain Users"
print ls1
print "Local Users"
od = collections.OrderedDict(sorted(ls.items()))
print(json.dumps(od, indent = 4))
else:
print e
#user Change alert
if input_user not in adminusers:
alert(1)
else:
alert(0)
Comments