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:
żą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ć:
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.
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).
#!/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