setpass.py #6

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

"""
This script will set the password for a user to the value set in the password
variable in the main function.

The name of the user to set the password for is passed as a parameter to the file.

Usage:
	python setpass.py [instance] user
	
instance defaults to 1 if not given.
"""

from subprocess import *
import sys
import time
import sdputils
verbose = "1"

if len(sys.argv) > 2:   # not usual arg
    SDP_INSTANCE = str(sys.argv[1])
else:
    SDP_INSTANCE = '1'

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

defaultpass = (utils.get('default_user_password'))


###############################################################################
def log(msglevel="DEBUG", message=""):
    if msglevel == "TEST":
        print("Running in test mode. Command run would have been:\n", message)
    elif msglevel == "ERROR":
        print(message)
        sys.exit(1)
    elif (verbose == "3"):
        print(message)
    elif (verbose == "2" and msglevel == "INFO"):
        print(message)


###############################################################################
def setpassword(user):
    try:
        cmd = ' passwd %s' % (user)
        pipe = Popen(p4 + cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)
        stderr = pipe.stdin.write(defaultpass)
        pipe.stdin.flush()
        time.sleep(2)
        stderr = pipe.stdin.write(defaultpass)
        pipe.stdin.flush()
        pipe.stdin.close()
        if pipe.wait() != 0:
            log("ERROR", "Password reset failed.\n%s%s generated the following error: %s" % (p4, cmd, stderr))
    except OSError as err:
        log("ERROR", "Execution failed: %s" % (err))


def main():
    if len(sys.argv) < 2:
        print("Read the usage section at the top of the script for required parameters.")
        sys.exit(1)
    if len(sys.argv) > 2:
        user = sys.argv[2]
    else:
        user = sys.argv[1]

    setpassword(user)


###############################################################################
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.