2012-08-06 5 views
9

Ich schreibe ein Bash-Skript, um Bilddateien von Snapito Web-Snapshot API herunterzuladen. Die API kann eine Vielzahl von Antworten zurückgeben, die durch verschiedene HTTP-Antwortcodes und/oder einige benutzerdefinierte Header angezeigt werden. Mein Skript soll als ein automatisierter Cron-Job ausgeführt werden, der URLs aus einer MySQL-Datenbank holt und die Screenshots auf dem lokalen Datenträger speichert.Verwenden von CURL zum Herunterladen von Datei- und Ansichtskopfzeilen und Statuscode

Ich verwende curl. Ich möchte diese 3 Dinge mit einem einzigen Befehl ROTATION tun:

  1. Extract den HTTP-Response-Code
  2. extrahieren die Header
  3. Speichern Sie die Datei lokal (wenn der Antrag erfolgreich war)

Ich könnte dies mit mehreren curl Anfragen tun, aber ich möchte die Anzahl der Male, die ich Snapito-Servern getroffen zu minimieren. Irgendwelche curl Experten da draußen?

Oder wenn jemand ein Bash-Skript hat, das auf die vollständig dokumentierten Snapito-API-Antworten reagieren kann, wäre das großartig. Hier ist their API documentation.

Danke!

+0

Sie könnten die Ausgabe analysieren, aber ich denke, das ist einfacher in Python/Ruby/PHP/... –

Antwort

14

Verwenden Sie die Dump-Header Option: curl -D /tmp/headers.txt http://server.com

+1

Ah, ja. Ich hatte die Option "-D" übersehen. Hier ist, was ich jetzt benutze: 'curl -s -LD/dev/stdout -o $ IMAGE_FILE $ SNAPITO_URL' Danke! – curtisdf

6

Verwenden curl -i (einschließlich HTTP-Header) -, die die Header ergeben wird, durch eine Leerzeile, gefolgt von den Inhalt gefolgt.

Sie können die Header/Inhalt (oder verwenden Sie -D direkt in Datei speichern, wie oben vorgeschlagen).

+1

Ich denke, du hast an die Option "-I" gedacht, nicht an "-i". – curtisdf

+1

Nein. -I ist nur Header, -i ist Header + Inhalt. –

+1

Ich sehe, du hast Recht. Die Verwendung von "-i" hätte mir jedoch ein anderes Problem gegeben: Analyse der Ausgabe, um die Header von den binären Bilddaten zu trennen. Ich habe es funktioniert gut mit der Option "-D" auf stdout (und von einem '$()' Wrapper erfasst), und die '-o' Option zum Speichern der Datei. Trotzdem danke! Ich werde daran denken, das nächste Mal in "-i" zu schauen. – curtisdf

Verwandte Themen