2012-08-06 16 views
9

Estoy escribiendo un script Bash para descargar archivos de imágenes desde la API de instantáneas de la página web de Snapito. La API puede devolver una variedad de respuestas indicadas por diferentes códigos de respuesta HTTP y/o algunos encabezados personalizados. Mi script está destinado a ejecutarse como un trabajo automatizado de Cron que extrae las URL de una base de datos MySQL y guarda las capturas de pantalla en el disco local.Uso de CURL para descargar archivos y ver encabezados y código de estado

Estoy usando curl. Me gustaría hacer estas 3 cosas utilizando un único comando curl:

  1. extraer el código de respuesta HTTP
  2. Extraer las cabeceras
  3. guardar el archivo localmente (si la solicitud se ha realizado correctamente)

Podría hacer esto usando múltiples solicitudes curl, pero quiero minimizar la cantidad de veces que presiono los servidores de Snapito. ¿Algún experto en curl por ahí?

O si alguien tiene un script Bash que pueda responder al conjunto completo documentado de las respuestas Snapito API, sería increíble. Aquí está their API documentation.

Gracias!

+0

Puede analizar la salida, pero supongo que es más fácil en python/ruby ​​/ php/... –

Respuesta

14

Utilice la opción encabezados de volcado: curl -D /tmp/headers.txt http://server.com

+1

Ah, sí. Había pasado por alto la opción '-D'. Esto es lo que estoy usando ahora: 'curl -s -L -D/dev/stdout -o $ IMAGE_FILE $ SNAPITO_URL' ¡Gracias! – curtisdf

6

Uso -i enrollamiento (incluir un encabezado HTTP) - que se obtendrán los encabezados, seguido por una línea en blanco, seguido por el contenido.

Puede dividir los encabezados/contenido (o use -D para guardar directamente en el archivo, como se sugirió anteriormente).

+1

Creo que estabas pensando en la opción '-I', no' -i'. – curtisdf

+1

No. -Es solo encabezados, -i es encabezados + contenido. –

+1

Ya veo, tienes razón. Sin embargo, usar '-i' me hubiera dado otro problema: analizar el resultado para separar los encabezados de los datos de imagen binarios. Lo hice funcionar muy bien con la opción '-D' enrutada a stdout (y capturada por un contenedor' $() ') y la opción' -o' para guardar el archivo. ¡Gracias! Recordaré mirar '-i' la próxima vez. – curtisdf

Cuestiones relacionadas