2013-08-15 14 views
5

Chcę wysłać żądanie CURL GET do adresu URL i na podstawie kodu powrotnego HTTP zdecydować, czy zrobić coś ze zwróconymi danymi HTTP.Jak wychwycić limit czasu/błędy w skrypcie powłoki CURL?

Na przykład, jeśli kod HTTP dla określonego żądania adresu URL za pośrednictwem cURL jest prawidłowy (bez przekroczenia limitu czasu lub błędu), należy zachować zwrócone dane z żądania w dowolnym miejscu w moim systemie.

W jaki sposób mogę "złapać" zwrócony kod HTTP (lub limit czasu) i na tej podstawie podjąć decyzję?

+0

[Ta odpowiedź] (http://stackoverflow.com/questions/2924422/how-do-i-determine-if-a-web-page-exists-with-shell-scripting) jest blisko spokrewniona ... – user000001

Odpowiedz

21

Należy wykonać jako script.sh http://www.google.com/.
-D - nagłówki zrzutu do pliku
-o - napisz odpowiedź złożyć
-s - milcz
-w - wartość wyświetlanie określonych zmiennych

#!/bin/bash 

RESPONSE=response.txt 
HEADERS=headers.txt 

status=$(curl -s -w %{http_code} $1 -o $RESPONSE) 

# or 
#curl -s -D $HEADERS $1 -o $RESPONSE 
#status=$(cat $HEADERS | head -n 1 | awk '{print $2}') 

echo $status 

Zastosowanie $status i $RESPONSE do dalszego przetwarzania.

+0

Wielkie dzięki. To działa! – Ron

+5

+1 za objaśnienie opcji CLI. Są w kartotece mężczyzn, ale miło jest usunąć ten dodatkowy poziom abstrakcji, wykonując tylko niewielką część pracy nad plakatem. Chciałbym, żeby więcej osób to zrobiło. – L0j1k

+0

Czy określone są znaki%? –

Powiązane problemy