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 نتیجے پر پروکسی دوبارہ شروع کرنا صحت مند سیشنوں میں خلل ڈال سکتا ہے، جبکہ اصل منزل کا مسئلہ اچھوتا رہتا ہے۔