Compare commits

..

1 Commits

Author SHA1 Message Date
0de7a4b2c0 shell_ntfy_remote_shutdown.env gelöscht 2024-12-21 10:37:23 +01:00
4 changed files with 26 additions and 56 deletions

2
.gitignore vendored Executable file → Normal file
View File

@@ -1 +1 @@
shell_ntfy_remote_shutdown_QNAS.env shell_ntfy_remote_shutdown.env

28
README.md Executable file → Normal file
View File

@@ -1,6 +1,6 @@
## Skript zum herunterfahren einer entfernten Computers ## Skript zum herunterfahren einer entfernten Computers
Dieses Skript automatisiert das herunterfahren eines Servers per SSH und sendet eine Benachrichtigung an einen NTFY Server. Es verwendet `curl` zum Senden von Benachrichtigungen und `sshpass` zum Ausführen von Remote-Befehlen. 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 ### Funktionen
@@ -20,33 +20,25 @@ Dieses Skript automatisiert das herunterfahren eines Servers per SSH und sendet
```bash ```bash
sudo apt install curl sshpass 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. shell_ntfy_remote_shutdown.sh und shell_ntfy_remote_shutdown.env). 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: 3. Setzen Sie die korrekten Dateiberechtigungen, um die Sicherheit zu gewährleisten:
```bash ```bash
chmod 700 shell_ntfy_remote_shutdown.sh chmod 700 backup.sh
chmod 600 shell_ntfy_remote_shutdown.env chmod 600 backup.env
chmod +x shell_ntfy_remote_shutdown.sh
``` ```
### Konfiguration ### Konfiguration
Erstellen Sie eine `.env`-Datei mit den folgenden Variablen: Erstellen Sie eine `.env`-Datei mit den folgenden Variablen:
```bash ```bash
# NTFY Server NTFY_URL=https://ntfy.gofel.net/
NTFY_URL=https://ntfy.server.net/ AUTH_TOKEN=tk_dd5geasc9844jcm3d45adio3rtchs
AUTH_TOKEN=tk_elwqvm6niscdn30f45iksdfh6sope
# Duplicati Server
DUPLICATI_URL=http://192.168.178.100:8200 DUPLICATI_URL=http://192.168.178.100:8200
SERVER_NAME=unRAID SERVER_NAME=unRAID
# NTFY Icon (Optional / Leer lassen falls nicht benötigt)
ICON=http://192.168.178.25:3030/icons/qnap-ts-412.png ICON=http://192.168.178.25:3030/icons/qnap-ts-412.png
SSH_PASSWORD=pass
# SSH Zugangsdaten des entfernten System SSH_USER=admin
SSH_HOST=192.168.178.105 SSH_HOST=192.168.178.105
SSH_USER=sshuser
SSH_PASSWORD=sshpass
``` ```
### Beschreibung der Variablen ### Beschreibung der Variablen
@@ -57,9 +49,9 @@ AUTH_TOKEN: Authentifizierungstoken für den NTFY-Server.
DUPLICATI_URL: URL zum Öffnen des Duplicati-Backup-Dashboards. DUPLICATI_URL: URL zum Öffnen des Duplicati-Backup-Dashboards.
SERVER_NAME: Anzeigename des Servers. SERVER_NAME: Anzeigename des Servers.
ICON: URL für das Benachrichtigungssymbol. ICON: URL für das Benachrichtigungssymbol.
SSH_HOST: Hostname oder IP-Adresse des Servers.
SSH_USER: Benutzername für die SSH-Anmeldung.
SSH_PASSWORD: Passwort für die SSH-Anmeldung am Server. 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.
``` ```
### Verwendung ### Verwendung

View File

@@ -1,15 +0,0 @@
# NTFY Server
NTFY_URL=https://ntfy.server.net/
AUTH_TOKEN=tk_elwqvm6niscdn30f45iksdfh6sope
# Duplicati Server
DUPLICATI_URL=http://192.168.178.100:8200
SERVER_NAME=unRAID
# NTFY Icon (Optional / Leer lassen falls nicht benötigt)
ICON=http://192.168.178.25:3030/icons/qnap-ts-412.png
# SSH Zugangsdaten des entfernten System
SSH_HOST=192.168.178.105
SSH_USER=sshuser
SSH_PASSWORD=sshpass

37
shell_ntfy_remote_shutdown.sh Executable file → Normal file
View File

@@ -12,27 +12,20 @@ fi
# .env-Datei laden # .env-Datei laden
source "$ENV_FILE" 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 # Server herunterfahren
#sshpass -p "$SSH_PASSWORD" ssh -o "StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST" "poweroff" sshpass -p "$SSH_PASSWORD" ssh -o "StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST" "poweroff"
#sshpass -p "$SSH_PASSWORD" ssh -o "StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST" "shutdown"
# NTFY-Benachrichtigung vorbereiten
CURL_CMD="curl -s -X POST \"$NTFY_URL\" \
-H \"Authorization: Bearer $AUTH_TOKEN\" \
-H \"Priority: default\" \
-H \"Tags: checkered_flag\""
[ -n "$ICON" ] && CURL_CMD="$CURL_CMD -H \"Icon: $ICON\""
CURL_CMD="$CURL_CMD -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\\\" }]
}\""
# Benachrichtigung senden
/bin/bash -c "$CURL_CMD"