2009-10-01 14 views
6

Ho scritto uno script di shell che ha una funzione come questa:CURL Riprova timeout

function getpage { 
     echo $1 
     curl -O "http://www.example.com/$1" -b cookie.txt -s 
} 

Il problema è se i tempi di siti web fuori allora quella pagina verrà saltata, ho bisogno di riprovare se scade (inserirò anche un timeout di 60 secondi).

Come posso fare?

risposta

8

È possibile utilizzare --retry <num> per tentativi forzati. Un modo alternativo è aggiungere -w http_code per vedere qual è il codice di ritorno ... se non è 200, quindi riprovare.

+0

ora perché penso ci penso, valore di timeout di 10 secondi con 50 tentativi (dubito fortemente che avrà mai bisogno di più di 3) – Hintswen

+3

C'è un modo per riprovare quando l'errore è host irraggiungibile o connessione rifiutata? – jrwren

+0

è possibile utilizzare: --writeout {http_code} E analizzare il risultato. Curl restituirà 0 se non è possibile connettersi, altrimenti il ​​codice di stato. –