To copy teamsite user permissions i’ve written a python script.
You’ll need to replace the path with the path of your teamsite’s bin directory:
#!/usr/bin/python
#Script Name: copyTeamSiteUser.py
#Use: ./copyTeamSiteUser.py -s (source_user) -d (destination_user)
#Note: the bin bath of teamsite was hardcoded, please replace /opt/iw-home/TeamSite/bin
# path of your teamsite's bin directory
#Author: Steve Stonebraker
import fileinput
import sys, re, getopt, os
import subprocess, traceback, inspect, re
def main(argv):
user1 = ''
user2 = ''
try:
opts, args = getopt.getopt(argv,"hs:d:")
except getopt.GetoptError:
print ('copyTeamSiteUser.py -s (source_user) -d (destination_user)')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print ('copyTeamSiteUser.py -s (source_user) -d (destination_user)')
sys.exit()
elif opt == '-s':
user1 = arg
elif opt == '-d':
user2 = arg
print("Source User: " + user1)
print("Destination User: " + user2)
#export permissions entries for user1
subprocess.call("/opt/iw-home/TeamSite/bin/iwaccess all-permission-entries-of-user " + user1 + " > sourceUser.tmp", shell=True)
#export permissions entries for user2
subprocess.call("/opt/iw-home/TeamSite/bin/iwaccess all-permission-entries-of-user " + user2 + " > destUser.tmp", shell=True)
#dedupe permissions entries that do not match
subprocess.call("fgrep -x -f destUser.tmp -v sourceUser.tmp > permissionsToAdd.tmp", shell=True)
scriptPath=os.getcwd()
#list permissions to process
print("Permissions to process:")
subprocess.call("cat permissionsToAdd.tmp", shell=True)
text_file = open("permissionsToAdd.tmp", "r")
line=0
#Switch to teamsite dir
os.chdir("/opt/iw-home/TeamSite/bin")
#process permissions to add
for lineTxt in text_file.readlines():
re.sub("\s\s+" , " ", lineTxt)
thePath = lineTxt.split( )
theItems = lineTxt.replace(thePath[0],"")
cleanItems = theItems.replace("\t","")
cleanItems = cleanItems.replace("\n","")
arrItems = cleanItems.split(",")
line=line+1
#process permissions for specific line
print "processing line: " + lineTxt
for permission in arrItems:
print ("processing item: " + permission)
cmd="./iwaccess add-permission-entry " + thePath[0] + " -user " + user2 + " -role " + "'" + permission + "'"
print (cmd)
subprocess.call(cmd, shell=True)
text_file.close()
#Switch to script dir
os.chdir(scriptPath)
print("current dir: " + os.getcwd())
subprocess.call("rm *.tmp", shell=True)
#export permissions entries for user1
subprocess.call("/opt/iw-home/TeamSite/bin/iwaccess all-permission-entries-of-user " + user1 + " > sourceUser.tmp", shell=True)
#export permissions entries for user2
subprocess.call("/opt/iw-home/TeamSite/bin/iwaccess all-permission-entries-of-user " + user2 + " > destUser.tmp", shell=True)
#dedupe permissions entries that do not match
subprocess.call("fgrep -x -f destUser.tmp -v sourceUser.tmp > permissionsToAdd.tmp", shell=True)
print("Processing complete, comparing " + user1 + " to " + user2)
if os.path.getsize(scriptPath + "/permissionsToAdd.tmp") > 0:
print(user2 + " is missing the following permissions")
subprocess.call("cat permissionsToAdd.tmp", shell=True)
print("Check permissions for each entry manually")
print("example:")
print("# /opt/iw-home/TeamSite/bin/iwaccess all-permission-entries-of-user " + user2 + " | grep '/default/main/marlboro/cms'")
else:
print(user1 + " and " + user2 + " have equal permissions")
if __name__ == "__main__":
main(sys.argv[1:])
