Zašto provjera proxyja u ljusci ostaje neuspješna nakon što curl uspije
Izbjegnite zadržavanje starog curl neuspjeha u varijabli ljuske nakon što kasnije provjere proxyja uspiju.
Proxy jednom zakaže. Kasniji zahtjevi uspiju, ali nadzornik i dalje objavljuje novi neuspjeh. Provjerite je li skripta zapamtila jučerašnji izlazni status.
Ovaj obrazac ažurira varijablu samo kada curl zakaže:
status=0
# Repeated inside a loop:
curl ... || status=$?
Nakon prvog rezultata različitog od nule, uspješna iteracija ostavlja status netaknutim. Ne postaje nula samo zato što je curl uspio.
Umjesto toga granajte na trenutnu naredbu:
if curl --proxy socks5h://127.0.0.1:1080 --noproxy '' \
--fail --silent --show-error --connect-timeout 3 --max-time 10 \
https://health.example/ >/dev/null; then
echo "check succeeded"
else
echo "check failed"
fi
Adresa i vremena su ilustrativni. Ovo uklanja zastarjelu varijablu; ne odlučuje koja je mjera oporavka prikladna.
Neka promatranje bude usko. Zahtjev ovisi o proxyju, daljnjoj ruti, odredištu, TLS provjeri i HTTP ishodu. Prekid na cilju može ga oboriti dok je SOCKS usluga zdrava. Neočekivana HTTP 200 stranica također može proći provjeru samo statusa bez pružanja očekivanog sadržaja.
Odaberite kontrolirani ugovor o odgovoru i zadržite fazu neuspjeha. Ponovno pokretanje proxyja pri svakom curl rezultatu različitom od nule može poremetiti zdrave sesije, dok stvarni problem odredišta ostaje netaknut.