You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.7 KiB
72 lines
2.7 KiB
2 years ago
|
import os,json,sys,subprocess,configparser,platform
|
||
2 years ago
|
|
||
|
def find_drive(file_path):
|
||
|
for number in range(65,91):
|
||
|
drive_letter = chr(number)
|
||
|
if os.path.exists(drive_letter+file_path):
|
||
|
return drive_letter+file_path
|
||
|
print("\n Searched file could not be found on any drive with path:" + file_path)
|
||
|
return False
|
||
|
|
||
|
def load_json_file(file_path,variable):
|
||
|
file = open(file_path)
|
||
|
data = json.load(file)
|
||
|
file.close()
|
||
|
return data.get(variable)
|
||
|
|
||
|
def get_administrator_status():
|
||
|
command = "(Get-LocalUser | Where-Object{$_.SID -like \"S-1-5-*-500\"}).Enabled"
|
||
|
run = subprocess.run(["powershell", "-Command", command], stdout=subprocess.PIPE, universal_newlines=True)
|
||
|
print("Is admin account enabled already: " + run.stdout)
|
||
|
return run.stdout
|
||
|
|
||
2 years ago
|
def get_administrator_name():
|
||
|
command = "(Get-LocalUser | Where-Object{$_.SID -like \"S-1-5-*-500\"}).Name"
|
||
|
run = subprocess.run(["powershell", "-Command", command], stdout=subprocess.PIPE, universal_newlines=True)
|
||
|
print("Administrator username: " + run.stdout)
|
||
|
return run.stdout
|
||
2 years ago
|
|
||
|
def enable_administrator_account():
|
||
|
command = "(Get-LocalUser | Where-Object{$_.SID -like \"S-1-5-*-500\"}).Name | Enable-LocalUser"
|
||
|
run = subprocess.run(["powershell", "-Command", command], stdout=subprocess.PIPE, universal_newlines=True)
|
||
|
print("\n Administrator account is activated by localscript")
|
||
|
return run.stdout
|
||
|
|
||
2 years ago
|
def is_os_64bit():
|
||
|
return platform.machine().endswith('64')
|
||
|
|
||
|
def get_data(variable,path):
|
||
|
configParser = configparser.RawConfigParser()
|
||
|
configParser.read(path)
|
||
|
data = configParser.get('DEFAULT',variable)
|
||
|
return data
|
||
|
|
||
|
|
||
2 years ago
|
# variables
|
||
2 years ago
|
meta_data_path = find_drive(":\OPENSTACK\LATEST\META_DATA.json")
|
||
2 years ago
|
admin_name = get_administrator_name()
|
||
|
|
||
|
# execute
|
||
2 years ago
|
if (meta_data_path) and ("admin_username" in load_json_file(meta_data_path,"meta")):
|
||
2 years ago
|
meta_data = load_json_file(meta_data_path,"meta")
|
||
2 years ago
|
meta_username = meta_data["admin_username"]
|
||
|
print("Meta_Data admin_username is :" + meta_username)
|
||
2 years ago
|
else:
|
||
2 years ago
|
if is_os_64bit():
|
||
|
conf_path = r'C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf'
|
||
|
print("System architecture is 64 bit.")
|
||
2 years ago
|
|
||
2 years ago
|
else:
|
||
|
conf_path = r'C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf'
|
||
|
print("System architecture is 32 bit.")
|
||
|
|
||
|
meta_username = get_data('username', conf_path)
|
||
|
print("Conf username:"+meta_username)
|
||
|
|
||
|
if meta_username in admin_name and "False" in get_administrator_status():
|
||
2 years ago
|
run = enable_administrator_account()
|
||
|
sys.exit(1001)
|
||
|
else:
|
||
|
print("Cloud-init user is not Administrateur/Administrator or Admin account is already enabled, script aborted.")
|
||
2 years ago
|
sys.exit(0)
|