Benutzer-Werkzeuge

Webseiten-Werkzeuge


synology:bash_script_fuer_snmp_zugriff_auf_usv_daten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
synology:bash_script_fuer_snmp_zugriff_auf_usv_daten [2026/01/26 09:37] dokuwikiadminsynology:bash_script_fuer_snmp_zugriff_auf_usv_daten [2026/05/15 18:46] (aktuell) dokuwikiadmin
Zeile 7: Zeile 7:
  
 Dateiname im Home Verzeichnis des angemeldeten Users erstellen: Dateiname im Home Verzeichnis des angemeldeten Users erstellen:
-<code>nano ~/check_ups_runtime.sh</code>+<code bash>nano ~/check_ups_runtime.sh</code>
 Diesen Inhalt kopieren und anpassen: Diesen Inhalt kopieren und anpassen:
-<code>+<code bash check_ups_runtime.sh>
 #!/bin/bash #!/bin/bash
  
 # SNMPv3 Authentifizierungsdetails # SNMPv3 Authentifizierungsdetails
 USERNAME="{Synology Username mit der entsprechenden Berechtigung}" USERNAME="{Synology Username mit der entsprechenden Berechtigung}"
-AUTH_PASSWORD="{Passwort}" +AUTH_PASSWORD="{Authentication Key}" 
-PRIV_PASSWORD="{Passwort}"+PRIV_PASSWORD="{Private Key}"
 IP_ADDRESS="{IP Adresse der Synology Diskstation}" IP_ADDRESS="{IP Adresse der Synology Diskstation}"
  
-OID für die verbleibende Batterielaufzeit in Sekunden +Datei zum Zwischenspeichern der letzten Restlaufzeit 
-OID=".1.3.6.1.4.1.6574.4.3.6.1.0"+RUNTIME_FILE="/Users/{User Name}/ups_last_runtime.dat" 
 +LOG_FILE="/Users/{User Name}//ups_shutdown.log"
  
 # Schwellwert in Sekunden # Schwellwert in Sekunden
 THRESHOLD=300 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 # 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}') REMAINING_RUNTIME=$(snmpget -v3 -l authPriv -u "$USERNAME" -a SHA -A "$AUTH_PASSWORD" -x AES -X "$PRIV_PASSWORD" "$IP_ADDRESS" "$OID" | awk '{print $NF}')
  
-Prüfen, ob die Restlaufzeit unter dem Schwellwert liegt +Falls SNMP fehlschlägt → abbrechen 
-if [ "$REMAINING_RUNTIME" -lt "$THRESHOLD" ]; then +if ! [[ "$REMAINING_RUNTIME" =~ ^[0-9]+]]; then 
-    echo "$(date): UPS remaining runtime is below threshold ($REMAINING_RUNTIME seconds) - shutting down" >> /Users/{User}/ups_shutdown.log +    echo "$(date): ERROR: Invalid SNMP value: $REMAINING_RUNTIME" >> "$LOG_FILE" 
-    # Shutdown Befehl je nach Betriebssystem. Für macOS z.B. mit einem Shortcut. +    exit 1 
-    shortcuts run "Shut Down" -"UPS remaining runtime ($REMAINING_RUNTIME seconds)."+fi 
 + 
 +Letzte gespeicherte Restlaufzeit lesen (falls vorhanden) 
 +if [ -"$RUNTIME_FILE" ]; then 
 +    LAST_RUNTIME=$(cat "$RUNTIME_FILE")
 else else
-    echo "$REMAINING_RUNTIME seconds" +    LAST_RUNTIME=$REMAINING_RUNTIME
-    # Bei Bedarf kann jeder Test protokolliert werden. +
-    echo "$(date): $REMAINING_RUNTIME seconds" >> /Users/{User}/ups_shutdown.log+
 fi 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
 </code> </code>
  
 Datei ausführbar machen: Datei ausführbar machen:
-<code>chmod +x ~/check_ups_runtime.sh</code>+<code bash>chmod +x ~/check_ups_runtime.sh</code>
  
 In macOS kann dann launchd zum regelmäßigen Ausführen verwendet werden: In macOS kann dann launchd zum regelmäßigen Ausführen verwendet werden:
-<code>nano ~/Library/LaunchAgents/com.{User}.check_ups_runtime.plist</code>+<code bash>nano ~/Library/LaunchAgents/com.{User}.check_ups_runtime.plist</code>
  
 Diesen Inhalt eintragen und entsprechend anpassen. In diesem Beispiel wird das Script alle 60 Sekunden ausgeführt: Diesen Inhalt eintragen und entsprechend anpassen. In diesem Beispiel wird das Script alle 60 Sekunden ausgeführt:
synology/bash_script_fuer_snmp_zugriff_auf_usv_daten.1769416647.txt.gz · Zuletzt geändert: von dokuwikiadmin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki