install_newt.sh aktualisiert
This commit is contained in:
106
install_newt.sh
106
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 <<EOF | sudo tee "$svc" > /dev/null
|
||||
cat <<EOF | sudo tee "$SERVICE_FILE" > /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 "$@"
|
||||
Reference in New Issue
Block a user