Compare commits

..

9 Commits

Author SHA1 Message Date
ad3fe8dd6f . 2025-02-20 20:50:25 +01:00
4aa4e9c0f7 . 2025-02-19 10:31:57 +01:00
5617e3a03c $ICON is optional now 2024-12-21 18:30:14 +01:00
8214ecf60d readme 2024-12-21 15:36:28 +01:00
30960779d7 added shutdown as extra command 2024-12-21 15:34:30 +01:00
b2c60a7ace readme 2024-12-21 15:19:38 +01:00
eee514a5e4 added example env 2024-12-21 15:18:36 +01:00
f8dfde8b9b Remove shell_ntfy_remote_shutdown.env from version control 2024-12-21 10:40:23 +01:00
9d89462d5b readme 2024-12-21 10:38:22 +01:00
4 changed files with 53 additions and 31 deletions

2
.gitignore vendored Normal file → Executable file
View File

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

28
README.md Normal file → Executable file
View File

@@ -1,6 +1,6 @@
## 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.
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.
### Funktionen
@@ -20,25 +20,33 @@ Dieses Skript automatisiert das Senden einer Benachrichtigung nach Abschluss ein
```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).
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).
3. Setzen Sie die korrekten Dateiberechtigungen, um die Sicherheit zu gewährleisten:
```bash
chmod 700 backup.sh
chmod 600 backup.env
chmod 700 shell_ntfy_remote_shutdown.sh
chmod 600 shell_ntfy_remote_shutdown.env
chmod +x shell_ntfy_remote_shutdown.sh
```
### Konfiguration
Erstellen Sie eine `.env`-Datei mit den folgenden Variablen:
```bash
NTFY_URL=https://ntfy.gofel.net/
AUTH_TOKEN=tk_dd5geasc9844jcm3d45adio3rtchs
# 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_PASSWORD=pass
SSH_USER=admin
# SSH Zugangsdaten des entfernten System
SSH_HOST=192.168.178.105
SSH_USER=sshuser
SSH_PASSWORD=sshpass
```
### Beschreibung der Variablen
@@ -49,9 +57,9 @@ 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.
SSH_USER: Benutzername für die SSH-Anmeldung.
SSH_PASSWORD: Passwort für die SSH-Anmeldung am Server.
```
### Verwendung

17
shell_ntfy_remote_shutdown.env Normal file → Executable file
View File

@@ -1,8 +1,15 @@
NTFY_URL=https://ntfy.gofel.net/
AUTH_TOKEN=tk_jtt0zcnmephixstrp9tleb6klf0zu
# 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_PASSWORD=uio390273
SSH_USER=admin
SSH_HOST=192.168.178.105
# SSH Zugangsdaten des entfernten System
SSH_HOST=192.168.178.105
SSH_USER=sshuser
SSH_PASSWORD=sshpass

37
shell_ntfy_remote_shutdown.sh Normal file → Executable file
View File

@@ -12,20 +12,27 @@ 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"
#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"