Por que uma verificação de proxy no shell continua falhando depois que o curl funciona
Evite manter uma falha antiga do curl numa variável do shell depois que as verificações de proxy seguintes funcionam.
O proxy falha uma vez. Os pedidos seguintes funcionam, mas o vigilante continua a anunciar outra falha. Verifique se o script se lembrou do estado de saída de ontem.
Este padrão só atualiza a variável quando o curl falha:
status=0
# Repeated inside a loop:
curl ... || status=$?
Depois do primeiro resultado diferente de zero, uma iteração bem-sucedida deixa status intacto. Não passa a zero só porque o curl funcionou.
Em vez disso, ramifique no comando atual:
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
O endereço e os tempos são ilustrativos. Isto remove a variável obsoleta; não decide qual ação de recuperação é adequada.
Mantenha a observação estreita. O pedido depende do proxy, da rota seguinte, do destino, da verificação TLS e do resultado HTTP. Uma indisponibilidade do alvo pode fazê-lo falhar enquanto o serviço SOCKS está saudável. Uma página HTTP 200 inesperada também pode passar uma verificação baseada apenas no estado sem fornecer o conteúdo esperado.
Escolha um contrato de resposta controlado e conserve a etapa da falha. Reiniciar o proxy a cada resultado curl diferente de zero pode perturbar sessões saudáveis enquanto o verdadeiro problema do destino fica intacto.