Exemplo n.º 1
0
    def NetGroupGetUsers(self, server, name, level):
        keepgoing = 1
        resume = 0
        members = []
        while keepgoing:
            try:
                m, total, resume = win32net.NetGroupGetUsers(
                    server, name, level, resume,
                    win32netcon.MAX_PREFERRED_LENGTH)
            except:
                return []

            for member in m:
                members.append(member)

            if not resume:
                keepgoing = 0
        return members
Exemplo n.º 2
0
def GroupEnum():
    "Enumerates all the domain groups"
    nmembers = 0
    resume = 0
    while 1:
        data, total, resume = win32net.NetGroupEnum(GlobalServer, 1, resume)
        #               print "Call to NetGroupEnum obtained %d entries of %d total" % (len(data), total)
        for group in data:
            verbose("Found group %(name)s:%(comment)s " % group)
            memberresume = 0
            while 1:
                memberdata, total, memberresume = win32net.NetGroupGetUsers(
                    GlobalServer, group['name'], 0, resume)
                for member in memberdata:
                    verbose(" Member %(name)s" % member)
                    nmembers = nmembers + 1
                if memberresume == 0:
                    break
        if not resume:
            break
Exemplo n.º 3
0
def GroupEnum():
    "Enumerates all the domain groups"
    nmembers = 0
    resume = 0
    while 1:
        data, total, resume = win32net.NetGroupEnum(server, 1, resume)
        #               print "Call to NetGroupEnum obtained %d entries of %d total" % (len(data), total)
        for group in data:
            verbose("Found group %(name)s:%(comment)s " % group)
            memberresume = 0
            while 1:
                memberdata, total, memberresume = win32net.NetGroupGetUsers(
                    server, group["name"], 0, resume)
                for member in memberdata:
                    verbose(" Member %(name)s" % member)
                    nmembers = nmembers + 1
                if memberresume == 0:
                    break
        if not resume:
            break
    assert nmembers, "Couldnt find a single member in a single group!"
    print("Enumerated all the groups")
Exemplo n.º 4
0
    def __get_groups_V0__(self):
        """

            Version précédente. Je la garde pour conjurer le mauvais sort

            Renvoie un dictionnaire des groupes du serveur avec, pour chacun, la liste de ses membres et
            le descriptif.
            N.B. On met tous les noms en minuscules pour ne pas être emmerdé quand on voudra faire
            "if nom in liste"
        """
        groups_list = {}
        resume = 0
        Enr, Total, resume = win32net.NetGroupEnum(self.server, 2, resume,
                                                   4096)
        while 1:
            for Champ in Enr:
                group_name = Champ['name'].lower()
                group_comment = Champ['comment']
                members_list = []
                memberresume = 0
                memberdata, total, memberresume = win32net.NetGroupGetUsers(
                    self.server, group_name, 1, memberresume)

                while 1:
                    for member in memberdata:
                        members_list.append(member['name'].lower())

                    if memberresume <= 0:
                        break

                    memberdata, total, memberresume = win32net.NetGroupGetUsers(
                        self.server, group_name, 1, memberresume)

                members_list.sort()
                groups_list[group_name] = [members_list, group_comment]

            if resume <= 0:
                break

            Enr, Total, resume = win32net.NetGroupEnum(self.server, 2, resume,
                                                       4096)
        """
            Cet abruti de microsoft s'obstine à utiliser des alias pour certains noms ("c:/Utilisateurs" par exemple
            qui est en réalité c:/Users"...).
            C'est ainsi que le groupe "domain users" est parfois traduit par "utilisateurs".
            Pour pas être emmerdés on ajoute artificiellement ces noms à la con. (fruit de l'expérience ! Et c'est
            certainement pas fini. À adapter aussi en fonction de la langue)
        """
        try:
            groups_list['administrateurs'] = groups_list['domain admins']
        except:
            pass

        try:
            groups_list['administrators'] = groups_list['domain admins']
        except:
            pass

        try:
            groups_list['utilisateurs'] = groups_list['domain users']
        except:
            pass

        try:
            groups_list['users'] = groups_list['domain users']
        except:
            pass

        return groups_list
Exemplo n.º 5
0
	def __init__(self):
		self.domain = '.' # current domain
		self.logontype = win32con.LOGON32_LOGON_INTERACTIVE
		self.provider = win32con.LOGON32_PROVIDER_WINNT50
		IP = '127.0.0.1'
		self.users = win32net.NetGroupGetUsers(IP,'none',0)[0]
Exemplo n.º 6
0
import sys
import getopt
import socket
import csv
import time

#Import the OptionParser to allow for CLI options
from optparse import OptionParser

# HPSA - Depending on Windows/Unix select the directories containing the pytwist libraries.
if (sys.platform == 'win32'):
    import win32net
    pytwist_dir = (os.environ['SystemDrive'] +
                   '\\Program Files\\Opsware\\smopylibs2')
    pylibs_dir = (os.environ['SystemDrive'] +
                  '\\Program Files\\Opsware\\agent\\pylibs')
else:
    pytwist_dir = '/opt/opsware/pylibs2'
    pylibs_dir = '/opt/opsware/agent/pylibs2'

# Add the pytwist/pylibs directories to the path and import necessary modules.
sys.path.append(pylibs_dir)
sys.path.append(pytwist_dir)

# Main Script
if (__name__ == '__main__'):
    hostname = socket.gethostname()
    (users, length, resume_handle) = win32net.NetGroupGetUsers(None, 'none', 1)
    for user in users:
        print "%s,%s" % (hostname, user['name'])