Shell Script per Cronjob ausführen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Apropo

Benutzer
Registriert
18. Juli 2013
Beiträge
241
Reaktionspunkte
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:
Poste bitte einmal den Inhalt von dnsupdate.sh.
 
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.
 
Gibt es /bin/bash? Es fehlt außerdem der volle Pfad zu old.ip, update.api und update.log.
 
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.
 
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

:o
 
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