rsync mit ssh zu Hidrive: Skript funktioniert, cronjob nicht

Status
Für weitere Antworten geschlossen.

deadbabylon

Benutzer
Mitglied seit
24. Mrz 2017
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Guten Morgen zusammen,

ich stolpere gerade über ein merkwürdiges Problem:
Ich habe einen Shellskript, dass mir ein Verzeichnis auf Hidrive mit rsync synchronisiert. Um keine Passwörter eingeben zu müssen, habe ich einen SSH-Schlüssel auf Hidrive hinterlegt und rufe rsync mit "-e ssh" auf.
Das Problem dabei ist: Als angemeldeter Nutzer funktioniert es problemlos, aber es bricht mit einer Fehlermeldung ab, wenn ich es in einen Cronjob packe:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

Der rsync-Aufruf sieht wie folgt aus:
rsync -rltDv \
--bwlimit=1000 \
-e "ssh -i $HOME/.ssh/id_strato" \
--log-file=$HOME/scripts/logs/rsync-android.log \
--delete-after \
/volume2/install/android/ USER@rsync.hidrive.strato.com:/users/USER/Android/

Ich habe das Problem mit mehreren solcher Skripte, die ich von meinem inzwischen ausgemusterten Raspberry Pi (mit normaler ArchLinux-Installation) übernommen habe. Dort funktionierte das Skript problemlos, ich schätze daher, dass es mit der cron-Version zu tun hat, die ich über IPKG installiert habe.

Weiß da jemand rat? Leider bekomme ich auch keine gescheite Debugging-Ausgabe hin.
 
Zuletzt bearbeitet:

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Mal die Rechte gecheckt?
Über die Konsole ausgeführt?

vvv mal als debug setzen
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
... und auch dran denken, dass bei Ausführung über crond evtl. eine andere Umgebung greift als interaktiv (PATH, ...).
Daher immer die wichtigsten Dinge aus /etc/profile und ~/.profile mit ins Script übernehmen...
 

deadbabylon

Benutzer
Mitglied seit
24. Mrz 2017
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Mal die Rechte gecheckt?
Über die Konsole ausgeführt?

Als in einer SSH-Sitzung angemeldeter normaler Nutzer funktioniert das Skript wie gesagt reibungslos. Der Cronjob läuft auch für genau diese Nutzer.


vvv mal als debug setzen

Bringt leider auch nicht viel mehr output:

opening connection using: ssh -i /var/services/homes/USER/.ssh/id_strato -l USER rsync.hidrive.strato.com rsync --server -vvvlDtre.isf --bwlimit=1000 --delete-after . /users/USER/Android/
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
[sender] _exit_cleanup(code=12, file=io.c, line=605): about to call exit(12)
 

deadbabylon

Benutzer
Mitglied seit
24. Mrz 2017
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
... und auch dran denken, dass bei Ausführung über crond evtl. eine andere Umgebung greift als interaktiv (PATH, ...).
Daher immer die wichtigsten Dinge aus /etc/profile und ~/.profile mit ins Script übernehmen...

Danke, das wars. Hab gleich ". /etc/profile" komplett mit ins Skript gepackt.

Vielen Dank! :)
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
Musst du nicht, kannst du aus deinem Script heraus "sourcen"
Code:
...
. /etc/profile
...
So wird du aber nie herausfinden, was deinem Script fehlte. Meist ist es nur der Pfad.
 

deadbabylon

Benutzer
Mitglied seit
24. Mrz 2017
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Musst du nicht, kannst du aus deinem Script heraus "sourcen"

Das meinte ich, steht so oben komplett im Skript.

So wird du aber nie herausfinden, was deinem Script fehlte. Meist ist es nur der Pfad.

Mag sein, aber mich nerven die fehlenden Umgebungsvariablen oftmals, bin ich so von "normalen" Linuxinstallationen nicht gewohnt.
Mit dem kompletten einfügen sollten die Schwierigkeiten ja nicht mehr auftreten und schaden tut es eigentlich auch nicht.
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Ich würde es mal mit dem Aufgabenplaner als root testen.
Wahrscheinlich stimmen die Rechte nicht und du würdest bei der kompletten Ausgabe Permission denieded oder so bekommen.
 
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