لماذا يبقى فحص وكيل الشل فاشلاً بعد نجاح curl
تجنّب الاحتفاظ بفشل curl قديم في متغيّر شل بعد نجاح فحوص الوكيل اللاحقة.
يفشل الوكيل مرة واحدة. تنجح الطلبات اللاحقة، ومع ذلك يواصل المراقب الإعلان عن فشل آخر. تحقّق مما إذا كان السكربت قد احتفظ بحالة الخروج من الأمس.
هذا النمط لا يحدّث المتغيّر إلا عندما يفشل 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 غير صفرية قد تعطّل جلسات سليمة بينما تبقى مشكلة الوجهة الحقيقية دون معالجة.