From 038e2d221303041e1f01fa534de22e91a2173cc9 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 5 Aug 2025 23:11:22 +0200 Subject: [PATCH] install_newt.sh aktualisiert --- install_newt.sh | 106 ++++++++++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 43 deletions(-) diff --git a/install_newt.sh b/install_newt.sh index 415c10d..c830ab6 100644 --- a/install_newt.sh +++ b/install_newt.sh @@ -10,17 +10,21 @@ REPO="fosrl/newt" INSTALL_DIR="/opt/newt" SERVICE_NAME="PVE-MGNT" SYMLINK="${INSTALL_DIR}/newt_latest" +SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" info() { echo -e "${GREEN}[INFO]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1"; } -FORCE=0 +MODE="auto" for arg in "$@"; do - if [[ "$arg" == "--force" ]]; then - FORCE=1 - fi + case "$arg" in + --install) MODE="install" ;; + --update) MODE="update" ;; + --reinstall|--force) MODE="reinstall" ;; + *) error "Unbekannter Parameter: $arg" && exit 1 ;; + esac done get_latest_version() { @@ -67,26 +71,12 @@ cleanup_old_versions() { } setup_systemd_service() { - svc="/etc/systemd/system/${SERVICE_NAME}.service" - - if [ -f "$svc" ] && [ $FORCE -eq 0 ]; then - info "systemd-Dienst ${SERVICE_NAME} existiert bereits. รœberspringe Neuanlage." - sudo systemctl restart "$SERVICE_NAME" - info "Dienst ${SERVICE_NAME} neu gestartet." - fi - - if [ -f "$svc" ] && [ $FORCE -eq 1 ]; then - info "systemd-Dienst ${SERVICE_NAME} wird wegen --force neu erstellt." - # Dienst noch NICHT stoppen hier! - sudo rm -f "$svc" - fi - - # Eingabe erst hier, bevor Dienst gestoppt wird + info "๐Ÿ› ๏ธ Erstelle systemd-Dienst ${SERVICE_NAME} ..." read -rp "๐Ÿ†” Bitte gib die Pangolin-ID ein: " PANGOLIN_ID read -rp "๐Ÿ”‘ Bitte gib das Secret ein: " PANGOLIN_SECRET read -rp "๐ŸŒ Bitte gib den Endpoint (z.โ€ฏB. https://pangolin.domain.de) ein: " PANGOLIN_ENDPOINT - cat < /dev/null + cat < /dev/null [Unit] Description=Newt Client - ${SERVICE_NAME} After=network.target @@ -100,43 +90,73 @@ RestartSec=5 WantedBy=multi-user.target EOF - # Dienst jetzt stoppen und neu starten (nur wenn force) - if [ $FORCE -eq 1 ]; then - sudo systemctl stop "$SERVICE_NAME" || true - fi - sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl enable "$SERVICE_NAME" sudo systemctl start "$SERVICE_NAME" - - info "๐Ÿ› ๏ธ systemd-Dienst ${SERVICE_NAME} eingerichtet und gestartet." + info "โœ… systemd-Dienst ${SERVICE_NAME} wurde eingerichtet und gestartet." } -main() { - info "๐Ÿ”ง Starte Installation/Update von newt ..." +perform_install() { + if [ -f "$SERVICE_FILE" ]; then + warn "Dienst ${SERVICE_NAME} existiert bereits. Nutze --reinstall fรผr Neuinstallation." + exit 0 + fi version=$(get_latest_version) version=${version#v} + info "๐Ÿ“ฆ Neueste Version: ${version}" + download_newt "$version" + cleanup_old_versions + setup_systemd_service + info "๐Ÿš€ Installation abgeschlossen!" +} +perform_update() { + if [ ! -f "$SERVICE_FILE" ]; then + error "Dienst ${SERVICE_NAME} nicht installiert. Nutze --install oder --reinstall." + exit 1 + fi + version=$(get_latest_version) + version=${version#v} info "๐Ÿ“ฆ Neueste Version: ${version}" - if [ -f "${INSTALL_DIR}/newt_${version}" ] && [ $FORCE -eq 0 ]; then + if [ -f "${INSTALL_DIR}/newt_${version}" ]; then info "โœ… Version ${version} ist bereits installiert. Kein Update nรถtig." else download_newt "$version" + cleanup_old_versions + sudo systemctl restart "$SERVICE_NAME" + info "๐Ÿ”„ Dienst ${SERVICE_NAME} wurde neu gestartet." fi - - cleanup_old_versions - setup_systemd_service - - info "๐Ÿ”„ Versuche Dienst ${SERVICE_NAME} neu zu starten..." - if sudo systemctl restart "$SERVICE_NAME"; then - info "โœ… Dienst ${SERVICE_NAME} erfolgreich neu gestartet." - else - error "โŒ Dienst ${SERVICE_NAME} konnte nicht neu gestartet werden!" - fi - - info "๐Ÿš€ Fertig! newt lรคuft als systemd-Dienst (${SERVICE_NAME})" + info "๐Ÿš€ Update abgeschlossen!" } -main "$@" +perform_reinstall() { + version=$(get_latest_version) + version=${version#v} + info "๐Ÿ“ฆ Neueste Version: ${version}" + download_newt "$version" + cleanup_old_versions + sudo systemctl stop "$SERVICE_NAME" || true + sudo rm -f "$SERVICE_FILE" || true + setup_systemd_service + info "๐Ÿš€ Reinstallation abgeschlossen!" +} + +main() { + case "$MODE" in + install) perform_install ;; + update) perform_update ;; + reinstall) perform_reinstall ;; + auto) + if [ -f "$SERVICE_FILE" ]; then + MODE="update" + else + MODE="install" + fi + main # rekursiver Aufruf mit gesetztem MODE + ;; + esac +} + +main "$@" \ No newline at end of file