Το proxy αποτυγχάνει μία φορά. Οι επόμενες αιτήσεις πετυχαίνουν, ωστόσο ο επόπτης συνεχίζει να αναγγέλλει άλλη μια αποτυχία. Ελέγξτε αν το script θυμήθηκε την κατάσταση εξόδου της χθες.

Αυτό το μοτίβο ενημερώνει τη μεταβλητή μόνο όταν το 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

Η διεύθυνση και οι χρόνοι είναι ενδεικτικοί. Αυτό αφαιρεί την παλιά μεταβλητή· δεν αποφασίζει ποια ενέργεια αποκατάστασης είναι κατάλληλη.

Κρατήστε την παρατήρηση στενή. Η αίτηση εξαρτάται από το proxy, τη διαδρομή προς τα εμπρός, τον προορισμό, την επαλήθευση TLS και την έκβαση HTTP. Μια διακοπή στον στόχο μπορεί να την αποτύχει ενώ η υπηρεσία SOCKS είναι υγιής. Μια απρόσμενη σελίδα HTTP 200 μπορεί επίσης να περάσει έλεγχο μόνο κατάστασης χωρίς να παρέχει το αναμενόμενο περιεχόμενο.

Επιλέξτε ένα ελεγχόμενο συμβόλαιο απόκρισης και διατηρήστε το στάδιο αποτυχίας. Η επανεκκίνηση του proxy σε κάθε μη μηδενικό αποτέλεσμα curl μπορεί να διαταράξει υγιείς συνεδρίες ενώ το πραγματικό πρόβλημα προορισμού μένει άθικτο.

Σχετικά άρθρα