Проксито се проваля веднъж. Следващите заявки успяват, но наблюдателят продължава да съобщава за нов провал. Проверете дали скриптът е запомнил изходния статус от вчера.

Този модел обновява променливата само когато 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 може да наруши здрави сесии, оставяйки истинския проблем с дестинацията нерешен.

Подобни статии