
117471
18.08.2014, aktualisiert um 22:32:09 Uhr
IF THEN Statement im bash-script funktioniert nicht
Hier mal "so zum Zeigen" das Script, mit dem ich die dynamische IP-Adresse von meinem RasPI aktualisiere:
Wenn ein Update erfolgen soll (also die IP-Adressen unterschiedich sind), wird Zeile 20 ausgeführt. Zeile 21 wird in dem Fall jedoch nicht ausgeführt. Wenn ich den Befehl aus Zeile 21 per cut&paste "händisch" fahre, läuft der problemlos durch.
Warum wird Zeile 21 nicht ausgeführt?
#!/bin/bash
#
hostname=xyz.zapto.org
getipscript=/root/dyndns/get_ip.sh
xml_file=/root/dyndns/external_ip.xml
logfile=/root/dyndns/cronscript.log
dns_ip=$(dig @8.8.8.8 $hostname +short)
meine_ip=$($getipscript)
date >> $logfile
echo "Externe DNS IP:" $dns_ip >> $logfile
echo "Externe IP der Fritz! Box:" $meine_ip >> $logfile
if [ "$dns_ip" = "$meine_ip" ]
then
echo "IP-Adressen sind identisch, kein Update notwendig" >> $logfile
else
echo "DNS-IP veraltet, Update erfolgt" >> $logfile
ddclient -daemon=0 -debug -verbose -noquiet 2 /etc/ddclient.conf >> $logfile
fi
echo "" >> $logfile
echo "" >> $logfile
echo "" >> $logfile
root@pinulldrei:~/dyndns#
Wenn ein Update erfolgen soll (also die IP-Adressen unterschiedich sind), wird Zeile 20 ausgeführt. Zeile 21 wird in dem Fall jedoch nicht ausgeführt. Wenn ich den Befehl aus Zeile 21 per cut&paste "händisch" fahre, läuft der problemlos durch.
Warum wird Zeile 21 nicht ausgeführt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246774
Url: https://administrator.de/forum/if-then-statement-im-bash-script-funktioniert-nicht-246774.html
Ausgedruckt am: 24.04.2025 um 07:04 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @117471:
Wenn ein Update erfolgen soll (also die IP-Adressen unterschiedich sind), wird Zeile 20 ausgeführt. Zeile 21 wird in dem Fall
jedoch nicht ausgeführt. Wenn ich den Befehl aus Zeile 21 per cut&paste "händisch" fahre, läuft der
problemlos durch.
Warum wird Zeile 21 nicht ausgeführt?
Wenn ein Update erfolgen soll (also die IP-Adressen unterschiedich sind), wird Zeile 20 ausgeführt. Zeile 21 wird in dem Fall
jedoch nicht ausgeführt. Wenn ich den Befehl aus Zeile 21 per cut&paste "händisch" fahre, läuft der
problemlos durch.
Warum wird Zeile 21 nicht ausgeführt?
'N Abend
wie stellst du fest, das zeile 21 nicht ausgeführt wird?
Schreib doch dahinter doch einfach noch ein echo, um festzustellen ob die zeile danach ausgeführt wird.
lks
Nachtrag: Stimmen die Pfade? Unter welchem User wird das Skript ausgeführt udn hat der denselben Pfad wie Du, wenn Du das im Terminal ausführst?
Zitat von @117471:
Ich habe das Gefühl, Du bist auch der Meinung, dass die Zeile ausgeführt werden müsste
Ich habe das Gefühl, Du bist auch der Meinung, dass die Zeile ausgeführt werden müsste
Eben. deswegen mein rat, einfach ein zweites echo hinter die ddclient-Zeile zu schreiben, damit man sicher weiß, daß der else-teil komplett abgearbeitet wird.
Das mit den Pfaden kann tatsächlich sein. Ich befinde mich auf einer Rootshell und starte das Script direkt -> kein
Problem. Ansonsten steht das in der crontab vom Root drin und dort scheint es nicht zu funktionieren.
Problem. Ansonsten steht das in der crontab vom Root drin und dort scheint es nicht zu funktionieren.
Wenn es aus der root-shell korrekt ausgeführt wird, heißt das, daß das skript in Ordnung ist.
hast Du stderr in der crontab auf /dev/null gebogen oder werden fehler Dir per mail zugestellt? Schau mal in die mails von/an root, die Dir der cron-daemon schickt. da soltle es drinstehen, wenn Du stderr nicht nach /dev/null entsorgt hast.
lks