Hallo liebe Community,
Ich arbeite an einem Gentoo-System und versuche via shell-Script Kalender-Dateien von unserem CalDav-Server zu sichern.
Als Grundlage zu meinem Script, habe ich mich hier orientiert:
https://uriesk.wordpress.com/2015/02/13/backup-your-caldav-calendar-with-cadaver/
mein Backup-Script sieht wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/bin/sh set -e mkdir /tmp/calendar cd /tmp/calendar NAME="Manfred" echo "Verarbeite Kalender von $NAME" URL="http://UNSER_CAL_DAV_SRV/davical/caldav.php/$NAME/calendar" curl -n $URL #fetch filelist cadaver $URL <<EOC| grep .ics | sed 's/.ics.*/.ics/' | sed 's/\ *//' > ./filelist ls exit EOC #download files cadaver $URL <<EOA `while read p; do echo "get $p" done < ./filelist` exit EOA cd .. tar cfvz /home/davcalbkp/calendar-$NAME`date +%Y.%m`.tar.gz /tmp/calendar/ rm -r /tmp/calendar |
Wenn ich das Script so laufen lasse, macht er auch genau das was ich erwarte: es wird sich am CalDav-Server angemeldet(.netrc), der richtige Kalender geöffnet, die ICS-Dateien ausgelesen und diese widerum gepackt.
So weit alles gut. Nun habe ich mir im nächsten Schritt gedacht, da ich ja mehrere Kalender sichern will, ich gebe die Kalendernamen in einem Array an und lasse via Schleife jeden Kalender sichern.
Mein Ansatz ist dieser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/bin/sh set -e NAMEARRAY=("anne" "baerbel" "bea" "carsten" "david") mkdir -p /tmp/calendar cd /tmp/calendar for i in ${NAMEARRAY[@]} do NAME=$i echo "Verarbeite Kalender von $NAME" URL="http://UNSER_CALDAV_SRV/davical/caldav.php/$NAME/calendar" curl -n $URL #fetch filelist cadaver $URL <<EOC| grep .ics | sed 's/.ics.*/.ics/' | sed 's/\ *//' > ./filelist ls exit EOC #download files cadaver $URL <<EOC `while read p; do echo "get $p" done < ./filelist` exit cd .. EOC tar cfvz /home/davcalbkp/calendar-$NAME`date +%Y.%m`.tar.gz /tmp/calendar/ done rm -r /tmp/calendar |
Wenn ich den Script laufen lasse, bekomme ich Rückmeldung, dass an der heredoc-Anweisung kein Abschluss ist
1 2 | Zeile 44: Warnung: Das in der Zeile 23 beginnende Here-Dokument geht bis zum Dateiende (erwartet wird `EOC'). Zeile 45: Syntax Fehler: Unerwartetes Dateiende. |
Ich finde den Fehler nicht, verschiedene Ansätze (u.A. die beiden "exit" auskommentieren, weil ich dachte dass diese zur vorzeitigen Beendigung der Schleife führen | Leerzeichen vor der heredoc-Anweisung entfernt | etc) führten alle nicht zu dem Ziel. Egal wo ich ansetze bekomme ich die oben genannte Fehlermeldung.
Ich weiß nicht mehr wo ich noch ansetzen soll und wäre sehr für ein bißchen Hilfe dankbar.
Wenn es einen Ansatz ohne heredoc-Anweisung gibt (vermute aber die wird hier benötigt um aus Cadaver wieder rauszukommen(?)), bin ich auch nicht unglücklich darüber.
Danke und Gruß erstmal
Wes
PS: Ich musste zwingend eine Distribution angeben um weiter zu kommen - die angegebene stimmt aber nicht (sorry dafür) - wie schon Anfangs geschrieben Gentoo - aber ich denke das dürfte jetzt für shell nicht weiter relevant sein