Miért marad sikertelen a shell proxy-ellenőrzés, miután a curl sikeres
Kerülje el, hogy egy régi curl-hiba a shell-változóban maradjon, miután a későbbi proxy-ellenőrzések sikerülnek.
A proxy egyszer meghibásodik. A későbbi kérések sikerülnek, a felügyelet mégis újabb hibát jelez. Ellenőrizze, hogy a szkript megjegyezte-e a tegnapi kilépési állapotot.
Ez a minta csak akkor frissíti a változót, amikor a curl meghibásodik:
status=0
# Repeated inside a loop:
curl ... || status=$?
Az első nem nulla eredmény után egy sikeres iteráció érintetlenül hagyja a status változót. Nem lesz nulla csak azért, mert a curl sikeres volt.
Ágazzon inkább az aktuális parancsra:
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
A cím és az időzítések szemléltetők. Ez eltávolítja az elavult változót; nem dönti el, melyik helyreállítási művelet megfelelő.
Tartsa szűken a megfigyelést. A kérés a proxytól, a továbbvezető útvonaltól, a céltól, a TLS-ellenőrzéstől és a HTTP-eredménytől függ. A cél kiesése sikertelenné teheti, miközben a SOCKS szolgáltatás egészséges. Egy váratlan HTTP 200 oldal is átmehet egy csak állapotra épülő ellenőrzésen anélkül, hogy a várt tartalmat nyújtaná.
Válasszon szabályozott válaszkontraktust, és tartsa meg a hiba szakaszát. A proxy újraindítása minden nem nulla curl-eredménynél megzavarhatja az egészséges munkameneteket, miközben a valódi célprobléma érintetlen marad.