imagestack/scripts/generate_intarget.py
2025-04-10 14:51:45 +02:00

46 lines
2.1 KiB
Python

def convert_to_in_target(bash_script_path, target_username, output_file_path):
try:
with open(bash_script_path, 'r') as file:
lines = file.readlines()
in_target_commands = []
# Construct the script creation command
script_creation_cmd = f"d-i preseed/late_command string \\"
in_target_commands.append(script_creation_cmd)
# Convert each script line into an in-target command
for line in lines:
# Strip the line to remove leading/trailing whitespace
stripped_line = line.strip()
if stripped_line: # Ignore empty lines
escaped_line = (
stripped_line.replace('"', '\\"')
.replace('$', '\\$')
.replace('(', '\\(')
.replace(')', '\\)')
.replace('[', '\\[')
.replace(']', '\\]')
.replace('#', '\\#')
)
cmd = f"in-target bash -c 'echo \"{escaped_line}\" >> /home/{target_username}/post_hardware.sh' \\"
in_target_commands.append(cmd)
# Add command to make the script executable
in_target_commands.append(f"in-target chmod +x /home/{target_username}/post_hardware.sh")
# Write the generated in-target commands to the output file
with open(output_file_path, 'w') as output_file:
for command in in_target_commands:
output_file.write(command + "\n")
print(f"In-target commands successfully written to {output_file_path}")
except FileNotFoundError:
print("The specified bash script file does not exist.")
# Usage
bash_script_path = 'late_command.sh' # Replace with the path to your bash script
target_username = 'computerspende' # Replace with the target user's username
output_file_path = 'scripts.txt' # Replace with the desired path for the output file
convert_to_in_target(bash_script_path, target_username, output_file_path)