#!/usr/bin/env python #------------------------------------------------------------------------------ # Copyright (c) Perforce Software, Inc., 2007-2015. All rights reserved # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1 Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE # SOFTWARE, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH # DAMAGE. #------------------------------------------------------------------------------ """ This script makes sure that all Perforce users are in the limits group. """ import sys, os, string, re instance=sys.argv[1] os.system("/p4/common/bin/p4master_run %s /p4/common/bin/p4login" % instance) os.system("/p4/common/bin/p4master_run %s /p4/%s/bin/p4_%s group -o limits > %s_limits.txt" % (instance, instance, instance, instance)) os.system("/p4/common/bin/p4master_run %s /p4/%s/bin/p4_%s users > %s_users.txt" % (instance, instance, instance, instance)) users = open("%s_users.txt" % instance, "r") limits = open("%s_limits.txt" % instance, "r") output = open("%s_newlimits.txt" % instance, "w") userlist = [] for user in users.readlines(): user = re.sub( r"<.*", r"", user ) user = user.strip() if user != "": userlist.append(user) users.close() for line in limits.readlines(): if line != "\n": output.write(line) limits.close() for user in userlist: output.write("\t%s\n" % user) output.close() os.system("/p4/common/bin/p4master_run %s /p4/%s/bin/p4_%s group -i < %s_newlimits.txt > /dev/null" % (instance, instance, instance, instance)) os.remove("%s_users.txt" % instance) os.remove("%s_limits.txt" % instance) os.remove("%s_newlimits.txt" % instance)
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#7 | 30507 | C. Thomas Tyler | Fixed typo in doc. | ||
#6 | 29926 | C. Thomas Tyler |
Fixed bug where script will hang if 'iconv' hangs, which can happen if certain Unicode characters exists that may appear in a user's FullName field. The fix was to remove the 'iconv' utility entirely, thus eliminating the risk of a hang. The 'p4 users' command was instead optimized to use 'p4 -ztag -F %User% users' to get just the needed list of users, so that the FullName fieled is not displayed to begin with (and thus no need for Unicode tranlsation). Also changed shebang line to reference python3 rather than python. Also improved docs. #review-29927 robert_cowham |
||
#5 | 29562 | lee_marzke | Fix update_limits.py to not crash when unicode characters encountered in user names or emails. | ||
#4 | 19768 | UnstoppableDrew |
@tom_tyler @russell_jackson Bug fix for running p4master_run as root, and some comment header cleanup. Job 000543 p4master_run: Preserve original arguments list and use this when exec'ing as $OSUSER. backup_functions.sh: Add text about sourcing p4_vars yourself instead of using p4master_run. update_limites.py: Run p4login directly without p4master_run since p4login calls p4_vars now. everything else: Remove comment block about needing to run with p4master_run. Reword comment about SDP_INSTANCE since it is not always an integer value. |
||
#3 | 16029 | C. Thomas Tyler |
Routine merge to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
#2 | 12169 | Russell C. Jackson (Rusty) |
Updated copyright date to 2015 Updated shell scripts to require an instance parameter to eliminate the need for calling p4master_run. Python and Perl still need it since you have to set the environment for them to run in. Incorporated comments from reviewers. Left the . instead of source as that seems more common in the field and has the same functionality. |
||
#1 | 10638 | C. Thomas Tyler | Populate perforce_software-sdp-dev. | ||
//guest/perforce_software/sdp/main/Server/Unix/p4/common/bin/update_limits.py | |||||
#1 | 10148 | C. Thomas Tyler | Promoted the Perforce Server Deployment Package to The Workshop. |