Pam mae gwiriad proxy shell yn parhau i fethu ar ôl i curl lwyddo
Osgoi cadw methiant curl hen mewn newidyn shell ar ôl i wiriadau proxy diweddarach lwyddo.
Mae'r proxy yn methu unwaith. Mae ceisiadau diweddarach yn llwyddo, ond mae'r watsiedydd yn dal i gyhoeddi methiant arall. Gwiriwch a gofiodd y sgript statws gadael ddoe.
Dim ond pan fydd curl yn methu y mae'r patrwm hwn yn diweddaru'r newidyn:
status=0
# Repeated inside a loop:
curl ... || status=$?
Ar ôl y canlyniad cyntaf nad yw'n sero, mae iteriad llwyddiannus yn gadael status heb ei gyffwrdd. Nid yw'n troi'n sero dim ond am fod curl wedi llwyddo.
Canghennwch ar y gorchymyn presennol yn lle hynny:
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
Mae'r cyfeiriad a'r amseru yn enghreifftiol. Mae hyn yn dileu'r newidyn hen; nid yw'n penderfynu pa gam adfer sy'n briodol.
Cadwch yr arsylwi yn gul. Mae'r cais yn dibynnu ar y proxy, y llwybr ymlaen, y cyrchfan, gwirio TLS, a chanlyniad HTTP. Gall methiant yn y targed ei fethu tra bod y gwasanaeth SOCKS yn iach. Gall tudalen HTTP 200 annisgwyl hefyd basio gwiriad statws yn unig heb ddarparu y cynnwys disgwyliedig.
Dewiswch gontract ymateb rheoledig a chadw'r cam methiant. Gall ailgychwyn y proxy ar bob canlyniad curl nad yw'n sero amharu ar sesiynau iach tra bod gwir broblem y cyrchfan yn parhau heb ei thrin.