From 5f7abef59d5801e15b8461f287aea4ac4ec6fc94 Mon Sep 17 00:00:00 2001 From: Ratatoskr Date: Fri, 22 Dec 2023 17:51:48 +0100 Subject: [PATCH] Improve IP resolution and add retry mechanism - Modified the IP resolution process to allow for multiple attempts with a specified interval. - Added a retry mechanism to check the IP address multiple times before considering it unsuccessful. - If the target IP cannot be found after the specified number of attempts, an error message is displayed. - Updated the SSH command to run the alarm script in the background. --- wecker.sh | 53 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/wecker.sh b/wecker.sh index 952678c..73a0feb 100755 --- a/wecker.sh +++ b/wecker.sh @@ -42,29 +42,39 @@ set_color() { # Die IP-Adresse von Lisas-IPhone holen und Ping-Test durchführen check_ip() { mac_address="e4:cd:d1" # Ersetze dies durch die MAC-Adresse - A72_ip=$(arp-scan --localnet | grep "$mac_address" | awk '{print $1}') + attempts=20 + interval=10 - if [ -z "$A72_ip" ]; then - echo "IP nicht gefunden. Ziel ist nicht erreichbar." - return 1 - fi - - echo "Gefundene IP: $A72_ip" + for ((i = 1; i <= $attempts; i++)); do + A72_ip=$(arp-scan --localnet | grep "$mac_address" | awk '{print $1}') + + if [ -n "$A72_ip" ]; then + echo "Gefundene IP: $A72_ip" - # Ping-Test durchführen - echo "teste ping $A72_ip" - local ping_output=$(/bin/ping -q -w 3 -c 3 $A72_ip 2>&1) - local ping_exit_code=$? - - echo "$ping_output" # Ausgabe des Ping-Befehls anzeigen + # Ping-Test durchführen + echo "teste ping $A72_ip" + local ping_output=$(/bin/ping -q -w 3 -c 3 $A72_ip 2>&1) + local ping_exit_code=$? + + echo "$ping_output" # Ausgabe des Ping-Befehls anzeigen - if [ $ping_exit_code -eq 0 ] && [[ "$ping_output" == *"3 received"* ]]; then - echo "Das Ziel ist erreichbar." - return 0 # Erfolg: Das Ziel ist erreichbar - else - echo "Das Ziel ist nicht erreichbar. Exit Code: $ping_exit_code" - return 1 # Fehler: Das Ziel ist nicht erreichbar - fi + if [ $ping_exit_code -eq 0 ] && [[ "$ping_output" == *"3 received"* ]]; then + echo "Das Ziel ist erreichbar." + return 0 # Erfolg: Das Ziel ist erreichbar + else + echo "Das Ziel ist nicht erreichbar. Exit Code: $ping_exit_code" + fi + fi + + if [ $i -lt $attempts ]; then + echo "Warte $interval Sekunden, bevor der nächste Versuch gestartet wird." + sleep $interval + fi + done + + # Alle Versuche erfolglos + echo "Das Ziel konnte nach $attempts Versuchen nicht erreicht werden." + return 1 # Fehler: Das Ziel konnte nicht erreicht werden } # check_ip -Funktion ausführen. @@ -121,7 +131,6 @@ check_notification() { echo $output iobroker state set zigbee.0.04cd15fffee03198.state false exit - } # Startwerte für Helligkeit und Farbtemperatur definieren @@ -170,7 +179,7 @@ check_ip echo "$A72_ip" # Starten des Alarm-Scripts auf dem Handy. -ssh -i /root/.ssh/A72 root@$A72_ip '/data/scripts/morning-alarm.sh' > /root/morning_alarm.log +ssh -i /root/.ssh/A72 root@$A72_ip "/data/scripts/morning-alarm.sh" & # Farben ändern für mehr konzentration while :; do