File: //opt/cwprads/cwp_terminal_setup
#!/usr/lib/cwprads/venv/bin/python3
import subprocess
import os
from sys import exit
def is_rhel8():
try:
with open('/etc/redhat-release') as release_file:
release_info = release_file.read().strip()
if "release" in release_info:
version = int(
release_info.split("release")[1].strip().split(".")[0]
)
return version <= 8
except ValueError as e:
print(f"Error determining OS version: {e}")
def install_python38():
if os.path.exists('/usr/bin/python3.8'):
return
subprocess.run(["yum", "install", "python38", "-y"])
def update_install_script(oldtext, newtext):
if not os.path.isfile('/scripts/install_terminal'):
print("unable to find /scripts/install_terminal for patching")
exit(1)
with open('/scripts/install_terminal') as f:
lines = f.readlines()
updated_lines = []
for line in lines:
if "express pty.js" in line:
continue
if oldtext in line and newtext not in line:
line = line.replace(oldtext, newtext)
updated_lines.append(line)
# patched_installer = contents.replace(oldtext, newtext)
with open('/scripts/install_terminal', 'w') as f:
f.writelines(updated_lines)
def run_installer():
subprocess.run(['/scripts/install_terminal'], cwd='/root', check=True)
def main():
oldtext = "--production"
newtext = "--production --python=/usr/bin/python3.8"
if is_rhel8():
install_python38()
update_install_script(oldtext, newtext)
run_installer()
if __name__ == "__main__":
main()