Ich habe hier einige Backup-Scripte, die auch mal etwas länger laufen, wo ich eine Benachrichtigung haben wollte. Unter anderem muss nach einem Backup-Lauf die externe USB-Festplatte für mein Offsite-Backup wieder abgezogen werden.
Da ich eh schon einen Discord-Account hatte, bot es sich an, per Webhook mir aus dem jeweiligen Script heraus eine Nachricht zu schicken.
Channel anlegen
Es bietet sich an, einen extra Channel im Discord dafür anzulegen. Meiner heißt “bots”.
Hook anlegen
Um einen Webhook anzulegen, wählt man den gewünschten Channel aus, klickt auf das daneben stehende Rädchen, um den Kanal zu bearbeiten. Im folgenden Menü auf den Unterpunkt “Integrationen” klicken und als nächstes die Schaltfläche “Webhook erstellen” anklicken.
Über den Pfeil, die weiteren Optionen aufklappen:
Hier den Hook umbenennen oder doch noch einem anderen Channel zuweisen. Der Klick auf die Schaltfläche “WebHook-URL kopieren” bringt diesen in die Zwischenablage.
Scripte
Zuerst kam der Wunsch auf, sich bei Ende des Backup-Scriptes eine Meldung zuschicken zu lasssen, dass es fertig ist. Entweder kann dann das nächste angeworfen werden oder es kann die externe USB-Festplatte abgekoppelt werden. Später kam dann der Wunsch auf, dass ich auch bei Fehlern eine Benachrichtigung bekomme. Weil ich keine große Lust hatte, da ein ordentliches Script mit einer Fall-Unterscheidung zu schreiben, habe ich es der Einfachheit halber dupliziert.
OK-Meldung
Die Gut-Meldung hat einen grünen Balken an der Seite und meldet ein “Backup fertig”.
Im Nachfolgenden Script discord-bot.sh
muss die Webhook-URL noch durch den Inhalt der Variablen discord_url
ersetzt werden.
1#!/bin/bash
2# Discord Webhook
3THE_SCRIPTNAME="${1}"
4discord_url="https://discord.com/api/webhooks/958845757975330887/wr21BPYs5jECw2OTAo86crAjGrAvbgaexvCAKqCFCgVDr5IFxQtrm5ON4CRAaBmP"
5
6generate_post_data() {
7 cat <<EOF
8{
9 "content": "Backup fertig",
10 "embeds": [{
11 "title": "Backup Script ist fertig!",
12 "description": "Script ${1}",
13 "color": "45973"
14 }]
15}
16EOF
17}
18
19# POST request to Discord Webhook
20curl -H "Content-Type: application/json" -X POST -d "$(generate_post_data ${THE_SCRIPTNAME} )" $discord_url
Fehlermeldung
Wenn ein Fehler passiert, gibt es einen roten Balken an der Seite. Zusätzlich habe ich dem Text einen Zeilenumbruch mit \n
verpasst.
Auch hier im nachfolgenden Script discord-bot-error.sh
den Variablen-Inhalt discord_url
wieder ersetzen.
1#!/bin/bash
2# Discord Webhook
3THE_SCRIPTNAME="${1}"
4FEHLER_MELDUNG="${2}"
5discord_url="https://discord.com/api/webhooks/958845757975330887/wr21BPYs5jECw2OTAo86crAjGrAvbgaexvCAKqCFCgVDr5IFxQtrm5ON4CRAaBmP"
6
7generate_post_data() {
8 cat <<EOF
9{
10 "content": "Backup Error",
11 "embeds": [{
12 "title": "Backup Script wirft Fehler!",
13 "description": "Script ${1}\nIrgendwas ist bei diesem Script schiefgelaufen.",
14 "color": "15548997"
15 }]
16}
17EOF
18}
19
20# POST request to Discord Webhook
21curl -H "Content-Type: application/json" -X POST -d "$(generate_post_data ${THE_SCRIPTNAME} ${FEHLER_MELDUNG})" $discord_url
Die Farbe der Balken
Die Farbe der Balken lässt sich ändern. Weiter unten ist eine tabellarische Auflistung.
Verwendung bzw. Aufruf im Backup-Script
Der Aufruf im Backup-Script ist dann simpel, hier das discord-bot.sh
in der letzten Zeile aufrufen:
1discord-bot.sh "${0}"
Im Fehlerfall an entsprechender Stelle
1discord-bot-error.sh "${0}"
Die beiden Bash-Dateien sollte natürlich ausführbar im Suchpfad von $PATH
sein.
Farben der Balken
Die erlaubten Farbwerte hatte ich irgendwo mal in diesem Internet gefunden, leider weiß ich nicht mehr wo.
Name | Wert bei color |
---|---|
Aqua |
1752220 |
Blue |
3447003 |
DarkAqua |
1146986 |
DarkBlue |
2123412 |
DarkerGrey |
8359053 |
DarkGold |
12745742 |
DarkGreen |
2067276 |
DarkGrey |
9936031 |
DarkNavy |
2899536 |
DarkOrange |
11027200 |
DarkPurple |
7419530 |
DarkRed |
10038562 |
DarkVividPink |
11342935 |
Gold |
15844367 |
Green |
5763719 |
Grey |
9807270 |
LightGrey |
12370112 |
LuminousVividPink |
15277667 |
Navy |
3426654 |
Orange |
15105570 |
Purple |
10181046 |
Red |
15548997 |
Yellow |
16776960 |
Verbesserungsvorschläge
Ihr könnt gerne auf GitLab einen Pull-Request einreichen.