mirror of
https://github.com/kevinveenbirkenbach/linux-image-manager.git
synced 2025-04-01 14:44:15 +02:00
Overall optimations
This commit is contained in:
parent
94fdcf5758
commit
e60b3cf2a7
20
main.py
20
main.py
@ -2,21 +2,23 @@
|
|||||||
import subprocess
|
import subprocess
|
||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
def run_script(script_path, extra_args):
|
def run_script(script_path, extra_args):
|
||||||
if not os.path.exists(script_path):
|
if not os.path.exists(script_path):
|
||||||
print(f"[ERROR] Script not found at {script_path}")
|
print(f"[ERROR] Script not found at {script_path}")
|
||||||
exit(1)
|
exit(1)
|
||||||
command = ["sudo","bash", script_path] + extra_args
|
command = ["sudo", "bash", script_path] + extra_args
|
||||||
print(f"[INFO] Running command: {' '.join(command)}")
|
print(f"[INFO] Running command: {' '.join(command)}")
|
||||||
result = subprocess.run(command)
|
# Pass the parent's stdout and stderr so that progress output shows in real time.
|
||||||
|
result = subprocess.run(command, stdout=sys.stdout, stderr=sys.stderr)
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
print(f"[ERROR] Script exited with code {result.returncode}")
|
print(f"[ERROR] Script exited with code {result.returncode}")
|
||||||
exit(result.returncode)
|
exit(result.returncode)
|
||||||
print("[SUCCESS] Script executed successfully.")
|
print("[SUCCESS] Script executed successfully.")
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Use os.path.realpath to get the actual path of this file regardless of symlinks
|
# Use os.path.realpath to get the actual path of this file regardless of symlinks.
|
||||||
repo_root = os.path.dirname(os.path.realpath(__file__))
|
repo_root = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
# Define available scripts along with their descriptions.
|
# Define available scripts along with their descriptions.
|
||||||
@ -100,9 +102,17 @@ def main():
|
|||||||
print("[INFO] No extra parameters provided.")
|
print("[INFO] No extra parameters provided.")
|
||||||
|
|
||||||
if not args.auto_confirm:
|
if not args.auto_confirm:
|
||||||
input("Press Enter to execute the script or Ctrl+C to cancel...")
|
try:
|
||||||
|
input("Press Enter to execute the script or Ctrl+C to cancel...")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n[ERROR] Execution aborted by user.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
run_script(script_info["path"], args.extra)
|
run_script(script_info["path"], args.extra)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
try:
|
||||||
|
main()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n[ERROR] Execution aborted by user.")
|
||||||
|
exit(1)
|
||||||
|
2
requirements.yml
Normal file
2
requirements.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
pacman:
|
||||||
|
- pv
|
@ -245,18 +245,28 @@ if [ -z "$image_checksum" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -v image_checksum ]]
|
if [[ -v image_checksum ]]; then
|
||||||
then
|
info "A checksum is defined for the image."
|
||||||
(info "Checking md5 checksum..." && echo "$image_checksum $image_path"| md5sum -c -) ||
|
info "Checksums verify file integrity to ensure that the file was not corrupted during download."
|
||||||
(info "Checking sha1 checksum..." && echo "$image_checksum $image_path"| sha1sum -c -) ||
|
info "The script will try verifying the integrity using MD5, then SHA1, and finally SHA256 if needed."
|
||||||
(info "Checking sha256 checksum..." && echo "$image_checksum $image_path"| sha256sum -c -) ||
|
|
||||||
error "Verification failed. HINT: Force the download of the image."
|
info "Trying MD5 checksum verification..."
|
||||||
else
|
(info "Checking md5 checksum..." && echo "$image_checksum $image_path" | md5sum -c -) ||
|
||||||
warning "Verification is not possible. No checksum is defined."
|
(warning "MD5 verification failed. This may indicate data corruption." &&
|
||||||
|
info "Trying SHA1 checksum verification for a secondary integrity check..." &&
|
||||||
|
info "Checking sha1 checksum..." && echo "$image_checksum $image_path" | sha1sum -c -) ||
|
||||||
|
(warning "SHA1 verification failed. Attempting SHA256 verification for thoroughness." &&
|
||||||
|
info "SHA256 provides a more robust check and is used as a final integrity measure." &&
|
||||||
|
info "Checking sha256 checksum..." && echo "$image_checksum $image_path" | sha256sum -c -) ||
|
||||||
|
error "Verification failed. HINT: Force the download of the image."
|
||||||
|
else
|
||||||
|
warning "No checksum is defined. Skipping checksum verification."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Verifying signature..."
|
info "Note: Checksums verify integrity but do not confirm authenticity."
|
||||||
|
info "Proceeding to signature verification, which ensures the file comes from a trusted source."
|
||||||
signature_download_url="$download_url.sig"
|
signature_download_url="$download_url.sig"
|
||||||
|
info "Attempting to download the image signature from: $signature_download_url"
|
||||||
info "Try to download image signature from $signature_download_url."
|
info "Try to download image signature from $signature_download_url."
|
||||||
|
|
||||||
if wget -q --method=HEAD "$signature_download_url"; then
|
if wget -q --method=HEAD "$signature_download_url"; then
|
||||||
@ -388,7 +398,7 @@ if [ "$transfer_image" = "y" ]
|
|||||||
elif [ "${image_path: -4}" = ".iso" ]
|
elif [ "${image_path: -4}" = ".iso" ]
|
||||||
then
|
then
|
||||||
info "Transfering .iso file..." &&
|
info "Transfering .iso file..." &&
|
||||||
sudo dd if="$image_path" of="$device_path" bs="$OPTIMAL_BLOCKSIZE" conv=fsync status=progress &&
|
pv "$image_path" | sudo dd of="$device_path" bs="$OPTIMAL_BLOCKSIZE" conv=fsync &&
|
||||||
sync ||
|
sync ||
|
||||||
error
|
error
|
||||||
elif [ "${image_path: -3}" = ".xz" ]
|
elif [ "${image_path: -3}" = ".xz" ]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user