diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c5e32c --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +## Skript zum herunterfahren einer entfernten Computers + +Dieses Skript automatisiert das Senden einer Benachrichtigung nach Abschluss eines Backup-Vorgangs und das Herunterfahren eines Servers per SSH. Es verwendet `curl` zum Senden von Benachrichtigungen und `sshpass` zum Ausführen von Remote-Befehlen. + +### Funktionen + +- Sendet eine Benachrichtigung an einen NTFY-Server mit benutzerdefinierten Details. +- Führt das Herunterfahren eines Servers über SSH durch. +- Lädt Konfigurationsvariablen aus einer externen .env-Datei. + +### Voraussetzungen + +`curl` Benötigt für das Senden von HTTP-Anfragen. +`sshpass` Benötigt für die nicht-interaktive SSH-Anmeldung. +`NTFY` Ein NTFY-Server für Benachrichtigungen + +### Installation + +1. Stellen Sie sicher, dass `curl` und `sshpass` auf Ihrem System installiert sind: +```bash +sudo apt install curl sshpass +``` +2. Platzieren Sie das Skript und eine .env-Datei im gleichen Verzeichnis. Die .env-Datei muss denselben Namen wie das Skript haben, jedoch mit der Endung .env (z. B. backup.sh und backup.env). +3. Setzen Sie die korrekten Dateiberechtigungen, um die Sicherheit zu gewährleisten: +```bash +chmod 700 backup.sh +chmod 600 backup.env +``` + +### Konfiguration + +Erstellen Sie eine `.env`-Datei mit den folgenden Variablen: +```bash +NTFY_URL=https://ntfy.gofel.net/ +AUTH_TOKEN=tk_dd5geasc9844jcm3d45adio3rtchs +DUPLICATI_URL=http://192.168.178.100:8200 +SERVER_NAME=unRAID +ICON=http://192.168.178.25:3030/icons/qnap-ts-412.png +SSH_PASSWORD=pass +SSH_USER=admin +SSH_HOST=192.168.178.105 +``` + +### Beschreibung der Variablen + +```bash +NTFY_URL: Die Basis-URL des NTFY-Servers. +AUTH_TOKEN: Authentifizierungstoken für den NTFY-Server. +DUPLICATI_URL: URL zum Öffnen des Duplicati-Backup-Dashboards. +SERVER_NAME: Anzeigename des Servers. +ICON: URL für das Benachrichtigungssymbol. +SSH_PASSWORD: Passwort für die SSH-Anmeldung am Server. +SSH_USER: Benutzername für die SSH-Anmeldung. +SSH_HOST: Hostname oder IP-Adresse des Servers. +``` \ No newline at end of file diff --git a/shell_ntfy_remote_shutdown.env b/shell_ntfy_remote_shutdown.env new file mode 100644 index 0000000..d0c90f7 --- /dev/null +++ b/shell_ntfy_remote_shutdown.env @@ -0,0 +1,8 @@ +NTFY_URL=https://ntfy.gofel.net/ +AUTH_TOKEN=tk_jtt0zcnmephixstrp9tleb6klf0zu +DUPLICATI_URL=http://192.168.178.100:8200 +SERVER_NAME=unRAID +ICON=http://192.168.178.25:3030/icons/qnap-ts-412.png +SSH_PASSWORD=uio390273 +SSH_USER=admin +SSH_HOST=192.168.178.105 \ No newline at end of file diff --git a/shell_ntfy_remote_shutdown.sh b/shell_ntfy_remote_shutdown.sh index e69de29..22545d3 100644 --- a/shell_ntfy_remote_shutdown.sh +++ b/shell_ntfy_remote_shutdown.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Pfad zur .env-Datei dynamisch ermitteln +ENV_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).env" + +# Prüfen, ob die .env-Datei existiert +if [[ ! -f "$ENV_FILE" ]]; then + echo "Fehler: Konfigurationsdatei $ENV_FILE nicht gefunden." + exit 1 +fi + +# .env-Datei laden +source "$ENV_FILE" + +# NTFY-Benachrichtigung senden +curl -s -X POST "$NTFY_URL" \ + -H "Authorization: Bearer $AUTH_TOKEN" \ + -H "Priority: default" \ + -H "Tags: checkered_flag" \ + -H "Icon: $ICON" \ + -H "Content-Type: application/json" \ + -d "{ + \"topic\": \"Duplicati\", + \"title\": \"Backups beendet\", + \"message\": \"QNas wird heruntergefahren.\n\nServer: $SERVER_NAME\", + \"click\": \"\", + \"actions\": [{ \"action\": \"view\", \"label\": \"Duplicati öffnen\", \"url\": \"$DUPLICATI_URL\" }] + }" + +# Server herunterfahren +sshpass -p "$SSH_PASSWORD" ssh -o "StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST" "poweroff"