From 103e7b3032cc886500fe72e0cab976f5742798fa Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Wed, 7 Nov 2018 23:33:26 +0100 Subject: [PATCH] Primo script funzionante. --- .gitignore | 13 +++++++++ pulseaudiomgr.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 .gitignore create mode 100644 pulseaudiomgr.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec1a3f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +.Python +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts +[Ss]hare +pyvenv.cfg +.venv +pip-selfcheck.json diff --git a/pulseaudiomgr.py b/pulseaudiomgr.py new file mode 100644 index 0000000..f44df8c --- /dev/null +++ b/pulseaudiomgr.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python + +import grp +import re +from subprocess import check_output +from sys import argv + +class UpdateGrp: + + def __init__(self, leftname = "domain users", rightname = "pulse"): + """Confronts members of the LHS group with the members of the RHS group. LHS group defaults to "domain users".""" + self.leftname = leftname + self.rightname = rightname + self.leftmembers = grp.getgrnam(self.leftname)[3] + self.rightmembers = grp.getgrnam(self.rightname)[3] + + # Since there is also a local user already created on the machine but + # it is not a domain user, we will add it to leftmembers + self.leftmembers.append("bglug") + + self.to_add = list(set(self.leftmembers) - set(self.rightmembers)) + self.to_remove = list(set(self.rightmembers) - set(self.leftmembers)) + + def update_rhs(self): + """Updates the RHS group members to be equal to the LHS group members.""" + # If RHS is a local group + with open('/etc/group', 'r') as group: + for grp in group.readlines(): + if re.match("%s:" % self.rightname, grp): + # If to_add is not empty, add each element to group + if len(self.to_add) > 0: + for user in self.to_add: + print(check_output(["gpasswd", "-a", user, self.rightname])) + + # If to_remove is not empty, remove each element to group + if len(self.to_remove) > 0: + for user in self.to_remove: + print(check_output(["gpasswd", "-d", user, self.rightname])) + + def update_lhs(self): + """Updates the LHS group members to be equal to the RHS group members.""" + # If LHS is a local group + with open('/etc/group', 'r') as group: + for grp in group.readline(): + if re.match("%s:" % self.leftname, grp): + # If to_remove is not empty, add each element to group + if len(self.to_remove) > 0: + for user in self.to_remove: + print(check_output(["gpasswd", "-a", user, self.leftname])) + + # If to_add is not empty, remove each element to group + if len(self.to_add) > 0: + for user in self.to_add: + print(check_output(["gpasswd", "-d", user, self.leftname])) + + + def modprint(self): + """Debug function to print only modifications.""" + print("To add:") + print(self.to_add) + print("To remove:") + print(self.to_remove) + +# When run interactively +if __name__ == '__main__': + # If the first argument is '--help' or '-h', or number of arguments less than 1 and more than 2, print help. + if len(argv) < 2 or len(argv) > 3 or argv[1] == '--help' or argv[1] == '-h': + print("Usage: %s " % argv[0]) + + else: + updgrp = UpdateGrp(argv[1], argv[2]) + updgrp.update_rhs()