poe.sh: CRLF-Zeilenenden, Feldanzahl und Switch-Gating fixen
- Datei hatte CRLF-Zeilenenden (vermutlich aus einer Windows-Bearbeitung), wodurch das Skript unter Linux/WSL mit "command not found: $'\r'" und Syntaxfehlern abbrach. Auf LF normalisiert. - Die Haupt-Check-Schleife las per `read` nur 7 Felder aus generate_ips.py, das aber inzwischen 8 Felder liefert (MAC am Ende angehängt) — dadurch landete die MAC-Adresse an $switch_pass angehängt. `mac` als zusätzliche (ungenutzte) read-Variable ergänzt. - PoE-Neustart wurde bei nicht erreichbaren Geräten ausgelöst, sobald ein `port`-Wert gesetzt war — unabhängig davon, ob dem Gerät überhaupt ein Switch zugeordnet ist. Das führte zu sinnlosen SSH-Versuchen mit leeren Zugangsdaten (ssh @) und irreführenden "PoE deaktiviert/aktiviert" Log-Einträgen für Geräte ohne Switch. Prüft jetzt zusätzlich, dass switch_ip nicht leer ist, bevor ein Neustart versucht wird (gilt für den regulären Check-Loop und den manuellen Neustart). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -92,7 +92,7 @@ function manual_restart() {
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Manueller Neustart von $dev_name gestartet." >> "$LOGFILE"
|
echo "$(date '+%Y-%m-%d %H:%M:%S') Manueller Neustart von $dev_name gestartet." >> "$LOGFILE"
|
||||||
if [ -n "$switch_port" ] && [ "$switch_port" != "None" ]; then
|
if [ -n "$switch_ip" ] && [ -n "$switch_port" ] && [ "$switch_port" != "None" ]; then
|
||||||
disable_poe "$switch_ip" "$switch_port" "$switch_user" "$switch_pass"
|
disable_poe "$switch_ip" "$switch_port" "$switch_user" "$switch_pass"
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name PoE deaktiviert." >> "$LOGFILE"
|
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name PoE deaktiviert." >> "$LOGFILE"
|
||||||
sleep 2
|
sleep 2
|
||||||
@@ -119,14 +119,17 @@ echo "" > "$LOGFILE"
|
|||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo "--------------------------------------------------------------------" >> "$LOGFILE"
|
echo "--------------------------------------------------------------------" >> "$LOGFILE"
|
||||||
python3 /srv/poe_manager/generate_ips.py | while IFS='|' read -r rpi_ip dev_name switch_ip switch_hostname switch_port switch_user switch_pass; do
|
python3 /srv/poe_manager/generate_ips.py | while IFS='|' read -r rpi_ip dev_name switch_ip switch_hostname switch_port switch_user switch_pass mac; do
|
||||||
if ping -c 1 -W 2 "$rpi_ip" &> /dev/null; then
|
if ping -c 1 -W 2 "$rpi_ip" &> /dev/null; then
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name ist erreichbar!" >> "$LOGFILE"
|
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name ist erreichbar!" >> "$LOGFILE"
|
||||||
else
|
else
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name ist nicht erreichbar!" >> "$LOGFILE"
|
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name ist nicht erreichbar!" >> "$LOGFILE"
|
||||||
|
|
||||||
# Nur PoE neu starten, wenn Port vorhanden ist
|
# Nur PoE neu starten, wenn dem Gerät auch tatsächlich ein Switch
|
||||||
if [ -n "$switch_port" ] && [ "$switch_port" != "None" ]; then
|
# zugeordnet ist (switch_ip) — ein reiner Port-Wert ohne Switch
|
||||||
|
# (switch_ip leer) darf keinen SSH-Versuch mit leeren
|
||||||
|
# Zugangsdaten auslösen.
|
||||||
|
if [ -n "$switch_ip" ] && [ -n "$switch_port" ] && [ "$switch_port" != "None" ]; then
|
||||||
disable_poe "$switch_ip" "$switch_port" "$switch_user" "$switch_pass"
|
disable_poe "$switch_ip" "$switch_port" "$switch_user" "$switch_pass"
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name PoE auf Port $switch_port am Switch $switch_hostname deaktiviert." >> "$LOGFILE"
|
echo "$(date '+%Y-%m-%d %H:%M:%S') $dev_name PoE auf Port $switch_port am Switch $switch_hostname deaktiviert." >> "$LOGFILE"
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|||||||
Reference in New Issue
Block a user