removeusersfromgroup.py #6

  • //
  • guest/
  • perforce_software/
  • sdp/
  • main/
  • Maintenance/
  • removeusersfromgroup.py
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#!/usr/bin/env python

USAGE = """
This script will remove the specified users from given group.

Usage:
 	removeusersfromgroup.py [instance] USER groupname
 	removeusersfromgroup.py [instance] FILE groupname

USER can be a single username or, it can be a FILE with a list of users.

instance defaults to 1 if not given.
"""

import os
import sys
import sdputils

if len(sys.argv) > 3:   # see params above
  SDP_INSTANCE = str(sys.argv[1])
else:
  SDP_INSTANCE = '1'

utils = sdputils.SDPUtils(SDP_INSTANCE)
p4 = utils.p4
utils.login()


def removeuser(username, groupname, groupfile):
  newgroupfile = groupfile + ".new"
  infile = open(groupfile, "r")
  outfile = open(newgroupfile, "w")
  for line in infile.readlines():
    if username.lower() != (line.strip()).lower():
      outfile.write(line)
  infile.close()
  outfile.close()
  os.remove(groupfile)
  os.rename(newgroupfile, groupfile)


def cleanup(groupfile):
  print("Cleaning temp files")
  try:
    os.remove(groupfile)
  except:
    print("Failed to delete " + groupfile)


def main():
  if len(sys.argv) < 3:
    print(USAGE)
    sys.exit(1)

  # Handle the optional instance parameter shift
  if len(sys.argv) > 3:
    userorfile = (sys.argv[2])
    groupname = sys.argv[3].strip()
  else:
    userorfile = (sys.argv[1])
    groupname = sys.argv[2].strip()

  global initialized
  initialized = 0
  groupfile = "%s.group" % groupname
  os.system("%s group -o %s > %s" % (p4, groupname, groupfile))

  try:
    userlistfile = open(userorfile, "r")
    for line in userlistfile.readlines():
      removeuser(line.strip(), groupname, groupfile)
  except:
    print("No file %s available, assuming it is the actual user name." % userorfile)
    removeuser(userorfile, groupname, groupfile)

  os.system("%s group -i < %s" % (p4, groupfile))
  cleanup(groupfile)


if __name__ == '__main__':
  main()
# Change User Description Committed
#7 27331 C. Thomas Tyler Released SDP 2020.1.27325 (2021/01/29).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#6 26161 C. Thomas Tyler Released SDP 2019.3.26159 (2019/11/06).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#5 16581 Robert Cowham Standardised processing and formatting.
Made python 2/3 compatible.
These need automated testing!
#4 15856 C. Thomas Tyler Replaced the big license comment block with a shortened
form referencing the LICENSE file included with the SDP
package, and also by the URL for the license file in
The Workshop.
#3 13908 C. Thomas Tyler Pushing SDP 2015.1.13906.
#2 11524 Russell C. Jackson (Rusty) Released updated version of the SDP from Dev.
#1 10148 C. Thomas Tyler Promoted the Perforce Server Deployment Package to The Workshop.