Variante Bash Script über Synology NAS Aufgabenplaner (ja es ginge, aber …)
Gleich vorweg. Ich weiß nicht ob das wirklich eine gute Wahl oder mehr Gefrickel ist aber ich wollte wissen ob es funktioniert.
Folgende Schritte ausführen
- per SSH by Synology anmelden
- zum homes Verzeichnis wechseln “volumen1/homes/admin” und dort die Datei .smbcredentials erstellen (keine txt)
username=admin
password=DeinGeheimesKennwort
- Inhalt von FRITZ.NAS mounten (einmalig bis zum nächsten Neustart, soll aber auch permanent gehen) Das “mnt” Verzeichnis darf nicht schon gemountet sein.
sudo mount -t cifs -o credentials=$HOME/.smbcredentials,vers=3.0,noserverino //19
2.168.xxx.xxx/FRITZ.NAS/ /mnt/
- Nach erfolgreichem Mounten kann man zu mnt wechseln und mit DIR abfragen
cd /mnt
DIR
total 4
drwxr-xr-x 2 root root 0 Apr 5 17:41 .
drwxr-xr-x 24 root root 4096 Apr 7 19:20 ..
drwxr-xr-x 2 root root 0 Nov 30 2023 Bilder
drwxr-xr-x 2 root root 0 Sep 2 2023 Dokumente
drwxr-xr-x 2 root root 0 Sep 26 2024 FRITZ
drwxr-xr-x 2 root root 0 Sep 19 2023 Musik
drwxr-xr-x 2 root root 0 Apr 5 17:41 USBverzeichnis
drwxr-xr-x 2 root root 0 Nov 30 2023 Videos
- Im Aufgabenplaner eine Aufgabe unter root anlegen und folgendes Script reinkopieren
Zusammenfassung
#In Synology Aufgabenplaner wird nur bei Fehler eine Mail versendet. Aus diesem Grund produzieren wir exit <> 0
#!/bin/bash
USB_DIR="/mnt/USBverzeichnis"
LIMIT=20 # Kleiner diesem Wert erfolgt eine Mailwarnung
if [ -d "$USB_DIR" ]; then
# Speicherplatz vom USB Stick holen
read -r FS SIZE USED_GB AVAIL_GB USED_PERC MOUNT <<< \
"$(df -h --output=source,size,used,avail,pcent,target "$USB_DIR" | tail -n 1)"
# Prozentzeichen entfernen
AVAIL_PERC=$((100 - ${USED_PERC%%%}))
if [ "$AVAIL_PERC" -lt "$LIMIT" ]; then
{
echo "Speicherstatus: $AVAIL_PERC% verfuegbar ($AVAIL_GB frei)"
echo "Groesste Ordner (Top-Level in $USB_DIR):"
#Listet die 5 größten Ordner absteigend sortiert auf
du -sh "$USB_DIR"/* 2>/dev/null | sort -hr | head -n 5
} >&2
exit 1
else
echo "$AVAIL_PERC% verfuegbar ($AVAIL_GB frei)"
exit 0
fi
else
echo "USB-Verzeichnis $USB_DIR nicht gefunden!" >&2
exit 2
fi
Das Script nutzt den Mount und liest den USB Stick aus. Wenn der verfügbare Speicherplatz kleiner des angegebenen Limits ist, wird durch den EXIT Trick Synolgy dazu gebracht, eine Mail zu versenden. In dieser steht der noch zur Verfügung stehenden Platz und es werden die 5 größten Ordner aufgelistet. Einfluß auf das Format und den Inhalt hat man nicht.
Der Aufgabenplaner hat eine geplante Aufgabe abgeschlossen.
Aufgabe: test
Start: Mon, 07 Apr 2025 21:26:18 +0200
Ende: Mon, 07 Apr 2025 21:26:35 +0200
Aktueller Status: 1 (Unterbrochen)
Standardausgabe/Fehler:
Speicherstatus: 92% verfuegbar (428G frei)
Groesste Ordner (Top-Level in /mnt/USBverzeichnis):
24G /mnt/USBverzeichnis/Musik_Bacardi
9.2G /mnt/USBverzeichnis/Backup
115M /mnt/USBverzeichnis/Kameras
23M /mnt/USBverzeichnis/FRITZ
704K /mnt/USBverzeichnis/Install SanDisk Software.exe
Von diskstation
Ja es geht, und selbst wenn ich gefühlt 100 Versuche brauchte - auf mein 2. Bash Script bin ich stolz aber irgendwie ist es Gefrickel (Auslesen der Ausgabe
read -r FS SIZE USED_GB AVAIL_GB USED_PERC MOUNT <<< \
"$(df -h --output=source,size,used,avail,pcent,target "$USB_DIR" | tail -n 1)"
Was ist wenn Synology das ändert bei einem Update. Auch das dieser Exit Trick nötig ist, gefällt mir nicht. Ich muß da nochmal in mich gehen.
Vielleicht habt Ihr weiterbringende Gedanken.