def main(): setup = get_setup() if setup['file']: config = lxml.etree.parse(setup['file']).getroot() else: config = lxml.etree.Element("Configuration") users = POSIXUsers(logging.getLogger('posixusers_baseline.py'), setup, config) baseline = lxml.etree.Element("Bundle", name="posixusers_baseline") for entry in users.FindExtra(): data = users.existing[entry.tag][entry.get("name")] for attr, idx in users.attr_mapping[entry.tag].items(): if (entry.get(attr) or (attr == 'uid' and setup['nouids']) or (attr == 'gid' and setup['nogids'])): continue entry.set(attr, str(data[idx])) if entry.tag == 'POSIXUser': entry.set("group", grp.getgrgid(data[3])[0]) for group in users.user_supplementary_groups(entry): memberof = lxml.etree.SubElement(entry, "MemberOf", group=group[0]) entry.tag = "Bound" + entry.tag baseline.append(entry) print(lxml.etree.tostring(baseline, pretty_print=True))
def __init__(self): Bcfg2.Options.get_parser( description="Generate a bundle with a baseline of POSIX users and " "groups", components=[self, POSIXUsers]).parse() config = lxml.etree.Element("Configuration") self.users = POSIXUsers(config) self.logger = logging.getLogger('posixusers_baseline.py')