הפרוקסי נכשל פעם אחת. בקשות מאוחרות יותר מצליחות, אך המשגיח ממשיך להכריז על כשל נוסף. בדקו אם הסקריפט זכר את סטטוס היציאה מאתמול.

התבנית הזאת מעדכנת את המשתנה רק כאשר 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 שאינה אפס עלולה לשבש הפעלות תקינות בעוד שבעיית היעד האמיתית נותרת ללא טיפול.

מאמרים קשורים