Shell Script per Cronjob ausführen

Status
Für weitere Antworten geschlossen.

Apropo

Benutzer
Mitglied seit
18. Jul 2013
Beiträge
240
Punkte für Reaktionen
0
Punkte
16
Moin,

ich möchte gerne ein Script per Cron ausführen lassen um den DNS Eintrag bei Inwx automatisch zu aktualisieren. Leider funktioniert das Script nicht wenn ich auf der Console den kompletten Pfad eingebe, also den ich auch in der Crontab eintragen würde:

Rich (BBCode):
sh /volume1/homes/admin/dyndnsupdater1/dnsupdate.sh

Damit bekomme ich zwar keinen Fehler, aber das Script wird anscheinend auch nicht ausgeführt, denn der DNS Eintrag ändert sich nicht.

Gehe ich aber vorher in den Ordner und führe das Script mit sh ./dnsupdate.sh aus funktioniert alles einwandfrei.


Hat jemand ne Idee was ich falsch mache?


Mfg, Apropo


Edit:

Keine Ahnung warum jetzt plötzlich, aber der Aufruf in der Console klappt jetzt. Aber der Cronjob mit dem selben Aufruf noch nicht. Jemand ne Idee warum?
 
Zuletzt bearbeitet:

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.058
Punkte für Reaktionen
2.565
Punkte
829
Poste bitte einmal den Inhalt von dnsupdate.sh.
 

Apropo

Benutzer
Mitglied seit
18. Jul 2013
Beiträge
240
Punkte für Reaktionen
0
Punkte
16
Rich (BBCode):
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH

USERNAME="Username" #INWX
PASSWORD="Passwort" #INWX
DNSID="123456789" #DNS Entry ID
APIHOST="https://api.domrobot.com/xmlrpc/"
OLDIP=$(cat old.ip)
NEWIP=$(curl -s curlmyip.com)

if [ ! "$OLDIP" == "$NEWIP" ]; then
    echo $NEWIP > old.ip
    DATA=$(cat update.api | sed "s/%PASSWD%/$PASSWORD/g;s/%USER%/$USERNAME/g;s/%DNSID%/$DNSID/g;s/%NEWIP%/$NEWIP/g")
    curl  -X POST -d "$DATA" "$APIHOST" --header "Content-Type:text/xml" --insecure > update.log
fi

Original war es ohne die Path Angaben. Hat aber auch nicht funktioniert.
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Gibt es /bin/bash? Es fehlt außerdem der volle Pfad zu old.ip, update.api und update.log.
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Und Oberhaupt: was ist update.API?
Scheinbar username,Passwort,dnsname
Aber die sind doch auch schon im Script?

Als zweite Zeile würde ich
cd /volume1/homes/admin/dyndnsupdater1
einfügen.
Und natürlich die Shell korrigieren.
 

Apropo

Benutzer
Mitglied seit
18. Jul 2013
Beiträge
240
Punkte für Reaktionen
0
Punkte
16
Vielen Dank für deine Tipps! Ich habe jetzt die Shell angepasst, die cd .... Zeile eingefügt und die kompletten Pfadangaben zu den anderen Dateien und es funktioniert jetzt wie gewünscht.

Und um noch deine Frage zu beantworten:
In der dnsupdate.sh wird nur geprüft ob sich die IP geändert hat und die Zugangsdaten eingetragen. Gegebenenfalls wird dann die neue IP und die Zugangsdaten an die update.API weitergegeben und das ist dann das eigentliche Updatescript was mit Inwx kommuniziert.

Also vielen Dank nochmal

:eek:
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat