Der zwangsweise Wechsel von wget zu curl war die Ursache dafür, daß ich meine Skripte, die wget benutzen, so modifizieren mußte, dass sie mit curl liefen.
Warum der Wechsel von wget zu curl?
Wie im Artikel „Rechner-Rechner-Migration“ beschrieben ist, wurde mir der Aufwand, wget auf meinem MAC OS X 10.11.5 zu installieren, zu groß.
Standardmäßig ist jedoch curl verfügbar..
Deshalb der Wechsel von wget zu curl …
Aufgabenstellung
Ich wollte regelmäßig Log-Dateien von meinem Webserver zur Analyse herunter auf meinen Rechner laden. Ein cron-Job (bash-Skript mit versch. wget-Kommandos) hatte dies regelmäßig auf meinem alten Laptop erledigt. Diese Funktion wollte ich weiter nutzen.
Die Files, (access_log und error_log und access_log_<Datum-lfd_#>.gz) die für mich wichtig sind, liegen auf dem WebServer unter <Pfad_irgendwas>/log bzw. <Pfad_irgendwas>/log/old
Vorweg: KEINE Haftung, siehe Disclaimer!
Die aktuellen Logs
haben einen „festen“ Datei-Namen, so daß ich diesen Teil des „Hol-Skriptes“ fest programmieren konnte:
/usr/bin/curl -s -R -u $WebUserName:$WebUSerPW -O <Pfad_irgendwas>/log/error_log -O <Pfad_irgendwas>/log/access_log
if [ „$?“ -ne „0“ ]; then /bin/echo „get logfiles per /usr/bin/curl brachte Fehler“; exit; fi
- -O zeigt den Namen der Datei auf dem WebServer an (2*genutzt, da error- und access-Log mit einem einzigen Kommando geholt werden …)
- -s unterdrückt die standardmäßige Fortschrittsanzeige (diese ist im cron unschön). Leider wird dadurch auch jeder weitere Output verhindert ..
Deshalb die Fehlerprüfung direkt hinter dem curl Kommando. Sie zeigt, ob das curl Kommando fehlerfrei lief. Ggf. kann somit das Skript mit „exit“ abgebrochen werden.
- -R übernimmt Datum/Uhrzeit der ursprünglichen Datei des WebServers
- -u ermöglicht die Eingabe des Users incl. des Passwortes
Alte Logfiles
haben jedoch einen variablen Namen. Sie enthalten <Jahr> und eine laufende Nummer. (siehe Hardcopy weiter unten)
Das (auf meinem MAC standardmäßig vorhandene) curl funktioniert anders, ist nicht kompatibel zu wget. Abgesehen von der unterschiedlichen Syntax fand ich bei curl keine Möglichkeit, mit „Wildcard“ zu arbeiten, d.h. „pauschal“ Daten von einer Internet-Seite zu filtern und herunter zu laden, was für die komprimierten „old“-Daten notwendig ist.
Also mußte ich etwas programmieren.
Das curl Kommando ohne spezielle Parameter liefert ein Inhaltsverzeichnis des betroffenen „remote“ Ordners des WebServers:

Mit Hilfe
- einer Schleife habe ich diese Information „in Stücke geteilt“
for file in `/usr/bin/curl -s -R -u $WebUserName:$WebUSerPW <Pfad_irgendwas>/log/old/ | /usr/bin/awk ‚{print $9}’` ; do
….
done;
- den Dateinamen (letzter Eintrag jeder „Zeile“, s. Hardcopy oben) herausgefiltert. Er wird in der Laufvariablen der Schleife (hier „file“) abgelegt.
- und in einem weiteren curl Kommando innerhalb der Schleife zum download der Datei genutzt:
/usr/bin/curl -s -R -u $WebUserName:$WebUSerPW -O <Pfad_irgendwas>/log/old/$file ;
Zusammengebaut mit „bells and whistles“ sieht das ganze „so“ aus: