Wenn die USV über ein USB Kabel an das Synology NAS angeschlossen ist, kann über SNMP der Status der USV, wie zum Beispiel die Restlaufzeit in Sekunden abgefragt werden. Dieses BASH Script kann auf macOS oder Linux Umgebung alle Minuten laufen und die Restlaufzeit prüfen. Wird diese unterschritten wird ein Shutdown des Computers an der USV durchgeführt. **Hinweis: Diese Anleitung funktioniert nur wenn der User angemeldet ist.** **Alle Daten in geschwungenen Klammern {} müssen angepasst werden!** Dateiname im Home Verzeichnis des angemeldeten Users erstellen: nano ~/check_ups_runtime.sh Diesen Inhalt kopieren und anpassen: #!/bin/bash # SNMPv3 Authentifizierungsdetails USERNAME="{Synology Username mit der entsprechenden Berechtigung}" AUTH_PASSWORD="{Authentication Key}" PRIV_PASSWORD="{Private Key}" IP_ADDRESS="{IP Adresse der Synology Diskstation}" # Datei zum Zwischenspeichern der letzten Restlaufzeit RUNTIME_FILE="/Users/{User Name}/ups_last_runtime.dat" LOG_FILE="/Users/{User Name}//ups_shutdown.log" # Schwellwert in Sekunden THRESHOLD=300 # OID für die verbleibende Batterielaufzeit in Sekunden OID=".1.3.6.1.4.1.6574.4.3.6.1.0" # Restlaufzeit abfragen REMAINING_RUNTIME=$(snmpget -v3 -l authPriv -u "$USERNAME" -a SHA -A "$AUTH_PASSWORD" -x AES -X "$PRIV_PASSWORD" "$IP_ADDRESS" "$OID" | awk '{print $NF}') # Falls SNMP fehlschlägt → abbrechen if ! [[ "$REMAINING_RUNTIME" =~ ^[0-9]+$ ]]; then echo "$(date): ERROR: Invalid SNMP value: $REMAINING_RUNTIME" >> "$LOG_FILE" exit 1 fi # Letzte gespeicherte Restlaufzeit lesen (falls vorhanden) if [ -f "$RUNTIME_FILE" ]; then LAST_RUNTIME=$(cat "$RUNTIME_FILE") else LAST_RUNTIME=$REMAINING_RUNTIME fi # Aktuelle Restlaufzeit speichern echo "$REMAINING_RUNTIME" > "$RUNTIME_FILE" # Entscheidungslogik if [ "$REMAINING_RUNTIME" -lt "$THRESHOLD" ] && [ "$REMAINING_RUNTIME" -lt "$LAST_RUNTIME" ]; then echo "$(date): UPS runtime decreasing below threshold ($REMAINING_RUNTIME s < $LAST_RUNTIME s) → shutdown" >> "$LOG_FILE" shortcuts run "Shut Down" -i "UPS remaining runtime ($REMAINING_RUNTIME seconds)." else echo "$(date): UPS runtime OK ($REMAINING_RUNTIME s, last $LAST_RUNTIME s)" >> "$LOG_FILE" fi Datei ausführbar machen: chmod +x ~/check_ups_runtime.sh In macOS kann dann launchd zum regelmäßigen Ausführen verwendet werden: nano ~/Library/LaunchAgents/com.{User}.check_ups_runtime.plist Diesen Inhalt eintragen und entsprechend anpassen. In diesem Beispiel wird das Script alle 60 Sekunden ausgeführt: Label com.{User}.check_ups_runtime ProgramArguments /bin/bash /Users/{User}/check_ups_runtime.sh StartInterval 60 Shortcut in macOS erstellen: - Suche nach **Show Notification** - //Hello, World!// mit **Shortcut Input** ersetzen - Title: UPS Battery low! - Play Sound: ☑️ - Attachment: Shortcut Input (Type: Text / Get: Text) - Suche nach "Shut Down" - Name des Shortcuts ändern in "Shut Down" - Icon und Farbe nach Bedarf anpassen