curl ਦੇ ਸਫਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਵੀ ਸ਼ੈੱਲ ਪ੍ਰੌਕਸੀ ਜਾਂਚ ਕਿਉਂ ਅਸਫਲ ਰਹਿੰਦੀ ਹੈ
ਬਾਅਦ ਦੀਆਂ ਪ੍ਰੌਕਸੀ ਜਾਂਚਾਂ ਸਫਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸ਼ੈੱਲ ਵੇਰੀਏਬਲ ਵਿੱਚ ਪੁਰਾਣੀ curl ਅਸਫਲਤਾ ਰੱਖਣ ਤੋਂ ਬਚੋ।
ਪ੍ਰੌਕਸੀ ਇੱਕ ਵਾਰ ਅਸਫਲ ਹੁੰਦਾ ਹੈ। ਬਾਅਦ ਦੀਆਂ ਬੇਨਤੀਆਂ ਸਫਲ ਹੁੰਦੀਆਂ ਹਨ, ਫਿਰ ਵੀ ਨਿਗਰਾਨ ਇੱਕ ਹੋਰ ਅਸਫਲਤਾ ਦਾ ਐਲਾਨ ਕਰਦਾ ਰਹਿੰਦਾ ਹੈ। ਦੇਖੋ ਕਿ ਸਕ੍ਰਿਪਟ ਨੇ ਕੱਲ੍ਹ ਦੀ ਐਗਜ਼ਿਟ ਸਥਿਤੀ ਯਾਦ ਰੱਖੀ ਸੀ ਜਾਂ ਨਹੀਂ।
ਇਹ ਪੈਟਰਨ ਵੇਰੀਏਬਲ ਨੂੰ ਸਿਰਫ਼ ਤਦ ਅੱਪਡੇਟ ਕਰਦਾ ਹੈ ਜਦੋਂ curl ਅਸਫਲ ਹੁੰਦਾ ਹੈ:
status=0
# Repeated inside a loop:
curl ... || status=$?
ਪਹਿਲੇ ਗੈਰ-ਜ਼ੀਰੋ ਨਤੀਜੇ ਤੋਂ ਬਾਅਦ, ਸਫਲ ਦੁਹਰਾਓ status ਨੂੰ ਅਛੂਤਾ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਸਿਰਫ਼ curl ਦੇ ਸਫਲ ਹੋਣ ਕਰਕੇ ਇਹ ਜ਼ੀਰੋ ਨਹੀਂ ਬਣਦਾ।
ਇਸ ਦੀ ਬਜਾਏ ਮੌਜੂਦਾ ਕਮਾਂਡ 'ਤੇ ਸ਼ਾਖਾ ਬਣਾਓ:
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
ਪਤਾ ਅਤੇ ਸਮੇਂ ਉਦਾਹਰਨ ਹਨ। ਇਹ ਪੁਰਾਣਾ ਵੇਰੀਏਬਲ ਹਟਾਉਂਦਾ ਹੈ; ਇਹ ਤੈਅ ਨਹੀਂ ਕਰਦਾ ਕਿ ਕਿਹੜੀ ਰਿਕਵਰੀ ਕਾਰਵਾਈ ਢੁਕਵੀਂ ਹੈ।
ਨਿਰੀਖਣ ਸੰਕੁਚਿਤ ਰੱਖੋ। ਬੇਨਤੀ ਪ੍ਰੌਕਸੀ, ਅੱਗੇ ਦੇ ਰਸਤੇ, ਮੰਜ਼ਿਲ, TLS ਪੁਸ਼ਟੀਕਰਨ ਅਤੇ HTTP ਨਤੀਜੇ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। SOCKS ਸੇਵਾ ਸਿਹਤਮੰਦ ਹੋਣ ਦੇ ਬਾਵਜੂਦ ਟਾਰਗਿਟ ਵਿੱਚ ਰੁਕਾਵਟ ਇਸ ਨੂੰ ਅਸਫਲ ਕਰ ਸਕਦੀ ਹੈ। ਅਚਾਨਕ HTTP 200 ਪੰਨਾ ਵੀ ਉਮੀਦ ਕੀਤੀ ਸਮੱਗਰੀ ਦਿੱਤੇ ਬਿਨਾਂ ਸਿਰਫ਼ ਸਥਿਤੀ-ਆਧਾਰਿਤ ਜਾਂਚ ਪਾਸ ਕਰ ਸਕਦਾ ਹੈ।
ਨਿਯੰਤਰਿਤ ਜਵਾਬ ਸਮਝੌਤਾ ਚੁਣੋ ਅਤੇ ਅਸਫਲਤਾ ਦਾ ਪੜਾਅ ਕਾਇਮ ਰੱਖੋ। ਹਰ ਗੈਰ-ਜ਼ੀਰੋ curl ਨਤੀਜੇ 'ਤੇ ਪ੍ਰੌਕਸੀ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਸਿਹਤਮੰਦ ਸੈਸ਼ਨਾਂ ਵਿੱਚ ਵਿਘਨ ਪਾ ਸਕਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਅਸਲ ਮੰਜ਼ਿਲ ਸਮੱਸਿਆ ਅਛੂਤੀ ਰਹਿੰਦੀ ਹੈ।