curl이 성공한 뒤에도 셸 프록시 확인이 실패로 남는 이유
이후 프록시 확인이 성공한 뒤에도 셸 변수에 오래된 curl 실패를 남기지 마십시오.
프록시가 한 번 실패합니다. 이후 요청은 성공하는데도 감시기는 또 다른 실패를 계속 알립니다. 스크립트가 어제의 종료 상태를 기억하고 있는지 확인하십시오.
이 패턴은 curl이 실패할 때만 변수를 갱신합니다:
status=0
# Repeated inside a loop:
curl ... || status=$?
처음 0이 아닌 결과 이후 성공한 반복은 status을 그대로 둡니다. curl이 성공했다는 이유만으로 0이 되지는 않습니다.
대신 현재 명령으로 분기하십시오:
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 페이지도 기대한 내용을 제공하지 않은 채 상태만 보는 확인을 통과할 수 있습니다.
통제된 응답 계약을 선택하고 실패 단계를 보존하십시오. 0이 아닌 curl 결과마다 프록시를 재시작하면 정상 세션을 방해하면서 실제 대상 문제는 그대로 남습니다.