Strona 1 z 1

[+] Skrypt w bashu z użyciem wget, przerwanie działania przy błędzie 403

: 08 czerwca 2011, 10:48
autor: michal881
Dzień dobry. Napisałem skrypt mający na celu pobieranie różnych plików z pewnego serwera. Problem polega na tym, że czasem dostęp do niego jest zastrzegany:

Kod: Zaznacz cały

żądanie HTTP wysłano, oczekiwanie na odpowiedź... 403 Forbidden
Na jakiś czas co wprowadza wiele zamieszania w mój programistyczny plan. Gdy serwer staje się zastrzeżony skrypt dalej działa naliczając ściągnięte pozycje i mam problem z wprowadzeniem mechanizmu kończącego działanie tak, aby w pliku wiadomość była prawdziwa ilość pobranych pozycji. Skrypt uproszczony. Pytanie jest takie, co dodać do tego skryptu, aby można było przerwać jego działanie przy błędzie 403. Proszę spojrzeć:

Kod: Zaznacz cały

#!/bin/bash 

for ((i=1; i<100; i++))
do 
wget  zmienny_URL
echo " Pobrano $i pozycji." > wiadomosc 
done

: 08 czerwca 2011, 11:07
autor: markossx
Może uda Ci się to załatwić liczbą prób:

Kod: Zaznacz cały

-t liczba
--tries=liczba
           Ustawia liczbę ponawiania prób na liczbę.  Dla nieskończonego ponawiania podajemy 0 lub inf.

: 08 czerwca 2011, 11:10
autor: michal881
No tak ale to się odnosi do pojedynczego użycia wget. Jeśli mamy pętlę to nie ma to wpływu. Wget dojdzie do granicy liczby prób, poleci kolejna procedura i naliczy mi się kolejny pobrany plik i od nowa.

: 08 czerwca 2011, 11:16
autor: markossx
Rozumiem. Może wypróbuj curl.

: 08 czerwca 2011, 11:22
autor: Bastian
Wydaje mi się, że w momencie gdy wget kończy działanie z niepowodzeniem (404) to zwraca powłoce kod błędu $1. Obsłuż, że jeśli kod błędu == $1 to skrypt kończy działanie (exit).

: 08 czerwca 2011, 12:41
autor: michal881
A jakby to wyglądało w kodzie?

: 10 czerwca 2011, 12:48
autor: Bastian
Mniejwięcej tak:

Kod: Zaznacz cały


#!/bin/bash 

for ((i=1; i<100; i++))
do 
wget  zmienny_URL
 if [ $? -eq 0 ]; then
  echo " Pobrano $i pozycji." > wiadomosc 
 else
  echo " Wystąpił błąd. Najprawdopodobniej adres nie istnieje. Kończę działanie" > wiadomosc
  exit 1
 fi
done







: 11 czerwca 2011, 00:10
autor: michal881
Dzięki, działa :)