Pse një kontroll proxy në shell mbetet i dështuar pasi curl ka sukses
Shmangni mbajtjen e një dështimi të vjetër të curl në një variabël shell pasi kontrollet e mëvonshme të proxy kanë sukses.
Proxy dështon një herë. Kërkesat e mëvonshme kanë sukses, por mbikëqyrësi vazhdon të njoftojë një dështim tjetër. Kontrolloni nëse skripti e mbajti mend statusin e daljes së djeshme.
Ky model e përditëson variablin vetëm kur curl dështon:
status=0
# Repeated inside a loop:
curl ... || status=$?
Pas rezultatit të parë jo zero, një përsëritje e suksesshme e lë status të paprekur. Ai nuk bëhet zero vetëm sepse curl pati sukses.
Në vend të kësaj, degëzoni mbi komandën aktuale:
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 dhe kohët janë ilustruese. Kjo heq variablin e vjetëruar; nuk vendos se cili veprim rikuperimi është i përshtatshëm.
Mbajeni vëzhgimin të ngushtë. Kërkesa varet nga proxy, rruga e mëtejshme, destinacioni, verifikimi TLS dhe rezultati HTTP. Një ndërprerje në objektiv mund ta dështojë atë ndërsa shërbimi SOCKS është i shëndetshëm. Një faqe e papritur HTTP 200 gjithashtu mund të kalojë një kontroll vetëm mbi statusin pa ofruar përmbajtjen e pritur.
Zgjidhni një kontratë të kontrolluar përgjigjeje dhe ruani fazën e dështimit. Rinisja e proxy për çdo rezultat curl jo zero mund të prishë sesione të shëndetshme ndërsa problemi i vërtetë i destinacionit mbetet i paprekur.