117471
Goto Top

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:

#!/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?

Content-Key: 246774

Url: https://administrator.de/contentid/246774

Printed on: April 19, 2024 at 04:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Aug 18, 2014 updated at 22:28:19 (UTC)
Goto Top
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?

'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?
Mitglied: 117471
117471 Aug 19, 2014 at 06:42:09 (UTC)
Goto Top
Ich habe das Gefühl, Du bist auch der Meinung, dass die Zeile ausgeführt werden müsste face-smile

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.

Ich werde heute Abend mal den vollständigen Pfad vor den ddclient basteln.
Member: Lochkartenstanzer
Lochkartenstanzer Aug 19, 2014 updated at 06:50:00 (UTC)
Goto Top
Zitat von @117471:

Ich habe das Gefühl, Du bist auch der Meinung, dass die Zeile ausgeführt werden müsste face-smile

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.

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