From 86628469a290d03ac404e92c4b90c2c6ed6ead0d Mon Sep 17 00:00:00 2001 From: "c.soylu" Date: Tue, 18 Jan 2022 13:13:57 +0100 Subject: [PATCH] Script compatible all languages, ModifyConf ps1 --- .../{ActivateDHCP.py => 00ActivateDHCP.py} | 0 ...istrator.py => 01ActivateAdministrator.py} | 31 ++++++++++++++++--- .../{EjectDrive.py => 99EjectDrive.py} | 0 powershell/FixUserService.ps1 | 16 +++++++++- powershell/ModifyConf.ps1 | 17 ++++++++++ 5 files changed, 58 insertions(+), 6 deletions(-) rename localscripts/{ActivateDHCP.py => 00ActivateDHCP.py} (100%) rename localscripts/{ActivateAdministrator.py => 01ActivateAdministrator.py} (64%) rename localscripts/{EjectDrive.py => 99EjectDrive.py} (100%) create mode 100644 powershell/ModifyConf.ps1 diff --git a/localscripts/ActivateDHCP.py b/localscripts/00ActivateDHCP.py similarity index 100% rename from localscripts/ActivateDHCP.py rename to localscripts/00ActivateDHCP.py diff --git a/localscripts/ActivateAdministrator.py b/localscripts/01ActivateAdministrator.py similarity index 64% rename from localscripts/ActivateAdministrator.py rename to localscripts/01ActivateAdministrator.py index f5ff24e..729fe99 100644 --- a/localscripts/ActivateAdministrator.py +++ b/localscripts/01ActivateAdministrator.py @@ -1,4 +1,4 @@ -import os,json,sys,subprocess +import os,json,sys,subprocess,configparser,platform def find_drive(file_path): for number in range(65,91): @@ -32,19 +32,40 @@ def enable_administrator_account(): print("\n Administrator account is activated by localscript") return run.stdout +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 + + # variables meta_data_path = find_drive(":\OPENSTACK\LATEST\META_DATA.json") admin_name = get_administrator_name() # execute -if meta_data_path != "False": +if (meta_data_path) and ("admin_username" in load_json_file(meta_data_path,"meta")): meta_data = load_json_file(meta_data_path,"meta") + meta_username = meta_data["admin_username"] + print("Meta_Data admin_username is :" + meta_username) else: - sys.exit(0) + if is_os_64bit(): + conf_path = r'C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf' + print("System architecture is 64 bit.") -if meta_data["admin_username"] in admin_name and "False" in get_administrator_status(): + 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(): run = enable_administrator_account() sys.exit(1001) else: print("Cloud-init user is not Administrateur/Administrator or Admin account is already enabled, script aborted.") - sys.exit(0) \ No newline at end of file + sys.exit(0) diff --git a/localscripts/EjectDrive.py b/localscripts/99EjectDrive.py similarity index 100% rename from localscripts/EjectDrive.py rename to localscripts/99EjectDrive.py diff --git a/powershell/FixUserService.ps1 b/powershell/FixUserService.ps1 index c0686a4..8e45492 100644 --- a/powershell/FixUserService.ps1 +++ b/powershell/FixUserService.ps1 @@ -1,7 +1,21 @@ +# Install OpenSSH Server from Windows' optional features + Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Serv*' | Select-Object -ExpandProperty Name | %{Add-WindowsCapability -Online -Name $_} Set-Service -Name sshd -StartupType 'Automatic' + +# Delete cloudbase-init User + net user cloudbase-init /delete + +# Attribute service to local system + sc.exe config cloudbase-init obj= .\LocalSystem + +# Modify executon path of Service + $newtext = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\cloudbase-init' -Name 'ImagePath' | Select-Object -ExpandProperty ImagePath | %{$_.replace(" cloudbase-init ", " NT-AUTHORITY\SYSTEM ")} Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\cloudbase-init' -Name 'ImagePath' -Value $newtext -Get-AppxPackage | Where-Object {$_.name -Like "*Language*"} | Remove-AppxPackage \ No newline at end of file + +# Remove a microsoft store language package that causes generelazing issues + +Get-AppxPackage | Where-Object {$_.name -Like "*Language*"} | Remove-AppxPackage diff --git a/powershell/ModifyConf.ps1 b/powershell/ModifyConf.ps1 new file mode 100644 index 0000000..0198fe3 --- /dev/null +++ b/powershell/ModifyConf.ps1 @@ -0,0 +1,17 @@ +# Replace in conf file Administrator username and group by the system's local language + +$adminname = 'username=' + (Get-WmiObject win32_useraccount | Where-Object{$_.SID -like "S-1-5-*-500"}).Name +$admingroupname = 'groups=' + (Get-WmiObject win32_group | Where-Object{$_.SID -like "S-1-5-32-544"}).Name + +if ((gwmi win32_operatingsystem | select osarchitecture).osarchitecture.Contains('64')) +{ + $fileNames = Get-ChildItem "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf" -Recurse | select -expand fullname + foreach ($filename in $filenames) { (Get-Content $fileName) -replace 'username=Administrator', $adminname | Set-Content $fileName } + foreach ($filename in $filenames) { (Get-Content $fileName) -replace 'groups=Administrators', $admingroupname | Set-Content $fileName } +} +elseif ((gwmi win32_operatingsystem | select osarchitecture).osarchitecture.Contains('32')) +{ + $fileNames = Get-ChildItem "C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\conf" -Recurse | select -expand fullname + foreach ($filename in $filenames) { (Get-Content $fileName) -replace 'username=Administrator', $adminname | Set-Content $fileName } + foreach ($filename in $filenames) { (Get-Content $fileName) -replace 'groups=Administrators', $admingroupname | Set-Content $fileName } +}