Per què una comprovació de proxy al shell continua fallant després que curl funcioni
Eviteu conservar un antic error de curl en una variable del shell després que les comprovacions de proxy posteriors funcionin.
El proxy falla una vegada. Les peticions posteriors funcionen, però el vigilant continua anunciant una altra fallada. Comproveu si l'script recordava l'estat de sortida d'ahir.
Aquest patró només actualitza la variable quan curl falla:
status=0
# Repeated inside a loop:
curl ... || status=$?
Després del primer resultat diferent de zero, una iteració correcta deixa status intacte. No es torna zero només perquè curl hagi funcionat.
En lloc d'això, decidiu segons l'ordre actual:
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
L'adreça i els temps són il·lustratius. Això elimina la variable obsoleta; no decideix quina acció de recuperació és adequada.
Mantingueu l'observació estreta. La petició depèn del proxy, de la ruta posterior, de la destinació, de la verificació TLS i del resultat HTTP. Una caiguda de l'objectiu pot fer-la fallar mentre el servei SOCKS està sa. Una pàgina HTTP 200 inesperada també pot superar una comprovació només d'estat sense oferir el contingut esperat.
Trieu un contracte de resposta controlat i conserveu l'etapa de la fallada. Reiniciar el proxy a cada resultat de curl diferent de zero pot trencar sessions sanes mentre el problema real de destinació queda intacte.