Kodėl apvalkalo tarpinio serverio patikra lieka nepavykusi, kai curl pavyksta
Venkite išsaugoti seną curl klaidą apvalkalo kintamajame po to, kai vėlesnės tarpinio serverio patikros pavyksta.
Tarpinis serveris nepavyksta kartą. Vėlesnės užklausos pavyksta, tačiau stebėtojas toliau skelbia dar vieną nesėkmę. Patikrinkite, ar scenarijus atsiminė vakarykštį išėjimo būseną.
Šis šablonas kintamąjį atnaujina tik tada, kai curl nepavyksta:
status=0
# Repeated inside a loop:
curl ... || status=$?
Po pirmo nulinio rezultato sėkminga iteracija palieka status nepakeistą. Jis netampa nuliu vien todėl, kad curl pavyko.
Veršiai išsišakoję pagal dabartinę komandą:
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
Adresas ir laikai yra iliustraciniai. Tai pašalina pasenusį kintamąjį; tai nenusprendžia, koks atkūrimo veiksmas tinkamas.
Stebėjimą laikykite siaurą. Užklausa priklauso nuo tarpinio serverio, tolesnio maršruto, tikslo, TLS patikros ir HTTP rezultato. Tikslo sutrikimas gali ją sugadinti, kai SOCKS paslauga sveika. Netikėtas HTTP 200 puslapis taip pat gali praeiti tik būsenos patikrą nepateikęs tikėtino turinio.
Pasirinkite kontroliuojamą atsakymo sutartį ir išsaugokite nesėkmės etapą. Tarpinio serverio perkrovimas prie kiekvieno nulinio curl rezultato gali sutrikdyti sveikas sesijas, o tikroji tikslo problema lieka nepaliesta.