2012-08-06 15 views
9

Sto scrivendo uno script Bash per scaricare i file di immagine dall'API dello snapshot della pagina Web Snapito. L'API può restituire una varietà di risposte indicate da diversi codici di risposta HTTP e/o alcune intestazioni personalizzate. Il mio script è concepito per essere eseguito come un processo Cron automatico che estrae gli URL da un database MySQL e salva gli screenshot sul disco locale.Utilizzo di CURL per scaricare il file e visualizzare le intestazioni e il codice di stato

Sto usando curl. Mi piacerebbe fare queste 3 cose con un solo comando CURL:

  1. estratto il codice di risposta HTTP
  2. estrarre gli header
  3. salvare il file in locale (se la richiesta ha avuto successo)

Potrei farlo utilizzando più richieste curl, ma voglio ridurre al minimo il numero di volte che ho colpito i server di Snapito. Qualche esperto di curl là fuori?

Oppure, se qualcuno ha uno script Bash che può rispondere al set completo di risposte API Snapito, sarebbe fantastico. Ecco their API documentation.

Grazie!

+0

È possibile analizzare l'output, ma immagino che sia più semplice in python/ruby ​​/ php/... –

risposta

14

Utilizzare l'opzione intestazioni di dump: curl -D /tmp/headers.txt http://server.com

+1

Ah, sì. Avevo trascurato l'opzione '-D'. Ecco cosa sto usando ora: 'curl -s -L -D/dev/stdout -o $ IMAGE_FILE $ SNAPITO_URL' Grazie! – curtisdf

6

Usa ricciolo -i (includere un'intestazione HTTP) - che produrrà le intestazioni, seguito da una riga vuota, seguita dal contenuto.

È possibile dividere le intestazioni/contenuto (oppure utilizzare -D per salvare direttamente sul file, come suggerito sopra).

+1

Penso che stavate pensando all'opzione '-I', non' -i'. – curtisdf

+1

No. -Sono solo le intestazioni, -i sono intestazioni + contenuto. –

+1

Vedo, hai ragione. L'uso di '-i' mi avrebbe dato però un altro problema: analizzare l'output per separare le intestazioni dai dati di immagine binaria. Ho funzionato bene con l'opzione '-D' indirizzata a stdout (e catturata da un' $() 'wrapper), e l'opzione' -o' per salvare il file. Grazie comunque! Mi ricorderò di esaminare '-i' la prossima volta. – curtisdf

Problemi correlati