in source/Tools Integration/MGN-Integration/MGN-automation-scripts/2-UserMgmt.py [0:0]
def main(arguments):
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--Waveid', required=True)
parser.add_argument('--WindowsUser', default="")
args = parser.parse_args(arguments)
UserHOST = ""
# Get MF endpoints from FactoryEndpoints.json file
if 'UserApiUrl' in endpoints:
UserHOST = endpoints['UserApiUrl']
else:
print("ERROR: Invalid FactoryEndpoints.json file, please update UserApiUrl")
sys.exit()
print("****************************")
print("*Login to Migration factory*")
print("****************************")
token = mfcommon.Factorylogin()
print("****************************")
print("*Getting Server List*")
print("****************************")
get_servers, linux_exist, windows_exist = mfcommon.get_factory_servers(args.Waveid, token, UserHOST)
target_os = ""
target_os = input("Enter target OS (Windows or Linux): ")
while target_os.lower() != 'windows' and target_os.lower() != 'linux':
print("Please provide a valid OS, either Windows or Linux")
target_os = input("ReEnter target OS (Windows or Linux): ")
print("")
choice_flag = True
choice = 3
while choice_flag:
print("1. Create user")
print("2. Delete user")
print("3. Exit")
choice = input("Enter your choice [1-3]: ")
if choice == '3':
sys.exit(0)
elif choice != '1' and choice != '2':
print("Please provide a valid option [1, 2, 3]")
print("")
else:
choice_flag = False
if target_os.lower() == 'windows':
if args.WindowsUser != "":
Windows_Password = mfcommon.GetWindowsPassword()
creds = " -Credential (New-Object System.Management.Automation.PSCredential(\"" + args.WindowsUser + "\", (ConvertTo-SecureString \"" + Windows_Password + "\" -AsPlainText -Force)))"
else:
creds = ""
if choice == '1':
print("")
print("************************************")
print("*Creating local admin on the server*")
print("************************************")
LocalAdminUser = input("Enter new Local admin username: ")
localadmin_pass_first = getpass.getpass('New local admin Password: ')
localadmin_pass_second = getpass.getpass('Re-enter Password: ')
while(localadmin_pass_first != localadmin_pass_second):
print("Password mismatch, please try again!")
localadmin_pass_first = getpass.getpass('New local admin Password: ')
localadmin_pass_second = getpass.getpass('Re-enter Password: ')
localadmin_pass = localadmin_pass_second
print("")
for account in get_servers:
if len(account["servers_windows"]) > 0:
for server in account["servers_windows"]:
if args.WindowsUser != "":
p_trustedhosts = subprocess.Popen(["powershell.exe", "Set-Item WSMan:\localhost\Client\TrustedHosts -Value '" + server["server_fqdn"] + "' -Concatenate -Force"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command1 = "Invoke-Command -ComputerName " + server['server_fqdn'] + " -ScriptBlock {net user " + LocalAdminUser + " " + localadmin_pass + " /add}" + creds
print("------------------------------------------------------")
print("- Creating a local user on: " + server['server_fqdn'] + " -")
print("------------------------------------------------------")
p = subprocess.Popen(["powershell.exe", command1], stdout=sys.stdout)
p.communicate()
command2 = "Invoke-Command -ComputerName " + server['server_fqdn'] + " -ScriptBlock {net localgroup Administrators " + LocalAdminUser + " /add}" + creds
print("Adding user to local admin group on server: " + server['server_fqdn'])
p = subprocess.Popen(["powershell.exe", command2], stdout=sys.stdout)
p.communicate()
print("")
else:
print("")
print("*************************************")
print("*Deleting local admin on the servers*")
print("*************************************")
print("")
LocalAdminUser = input("Enter local admin UserName to be deleted: ")
print("")
for account in get_servers:
if len(account["servers_windows"]) > 0:
for server in account["servers_windows"]:
if args.WindowsUser != "":
p_trustedhosts = subprocess.Popen(["powershell.exe", "Set-Item WSMan:\localhost\Client\TrustedHosts -Value '" + server["server_fqdn"] + "' -Concatenate -Force"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command1 = "Invoke-Command -ComputerName " + server['server_fqdn'] + " -ScriptBlock {net user " + LocalAdminUser + " /delete}" + creds
print("------------------------------------------------------")
print("- Deleting a local user on: " + server['server_fqdn'] + " -")
print("------------------------------------------------------")
p = subprocess.Popen(["powershell.exe", command1], stdout=sys.stdout)
p.communicate()
elif target_os.lower() == 'linux':
user_name = ''
pass_key = ''
key_exist = False
user_name, pass_key, key_exist = mfcommon.get_linux_password()
if choice == '1':
print("")
print("*********************************************")
print("* Creating local sudo user on Linux servers *")
print("*********************************************")
print("")
new_user_name = input("Enter New User Name: ")
new_password = getpass.getpass('Enter New Password: ')
confirm_password = getpass.getpass('Re-Enter New Password: ')
while new_password != confirm_password:
print('Both the passwords should match, Please try again!')
new_password = getpass.getpass('Enter New Password: ')
confirm_password = getpass.getpass('Re-Enter New Password: ')
print("")
for account in get_servers:
if len(account["servers_linux"]) > 0:
for server in account["servers_linux"]:
host = server["server_fqdn"]
create_user(host, user_name, pass_key, key_exist, new_user_name, new_password)
else:
print("")
print("**********************************************")
print("*Deleting local sudo users on all the servers*")
print("**********************************************")
print("")
new_user_name = input("Enter local User Name: ")
print("")
for account in get_servers:
if len(account["servers_linux"]) > 0:
for server in account["servers_linux"]:
host = server["server_fqdn"]
delete_linux_user(host, user_name, pass_key, key_exist, new_user_name)
print("")