Välityspalvelin epäonnistuu kerran. Myöhemmät pyynnöt onnistuvat, mutta valvoja ilmoittaa edelleen uudesta virheestä. Tarkista, muistiko skripti eilisen poistumistilan.

Tämä kaava päivittää muuttujan vain, kun curl epäonnistuu:

status=0
# Repeated inside a loop:
curl ... || status=$?

Ensimmäisen nollasta poikkeavan tuloksen jälkeen onnistunut kierros jättää status koskemattomaksi. Se ei muutu nollaksi vain siksi, että curl onnistui.

Haarauta sen sijaan nykyisen komennon mukaan:

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

Osoite ja ajat ovat havainnollisia. Tämä poistaa vanhentuneen muuttujan; se ei ratkaise, mikä palautustoimenpide on sopiva.

Pidä havainto kapeana. Pyyntö riippuu välityspalvelimesta, jatkoreitistä, kohteesta, TLS-tarkistuksesta ja HTTP-tuloksesta. Kohteen katkos voi kaataa sen, vaikka SOCKS-palvelu on kunnossa. Odottamaton HTTP 200 -sivu voi myös läpäistä pelkkään tilaan perustuvan tarkistuksen tarjoamatta odotettua sisältöä.

Valitse hallittu vastaussopimus ja säilytä virhevaihe. Välityspalvelimen uudelleenkäynnistys jokaisella nollasta poikkeavalla curl-tuloksella voi häiritä terveitä istuntoja, kun taas todellinen kohdeongelma jää koskemattomaksi.

Aiheeseen liittyvät artikkelit