Mengapa pemeriksaan proxy di shell tetap gagal setelah curl berhasil
Hindari menyimpan kegagalan curl lama dalam variabel shell setelah pemeriksaan proxy berikutnya berhasil.
Proxy gagal sekali. Permintaan berikutnya berhasil, tetapi pemantau terus mengumumkan kegagalan lain. Periksa apakah skrip mengingat status keluar kemarin.
Pola ini hanya memperbarui variabel saat curl gagal:
status=0
# Repeated inside a loop:
curl ... || status=$?
Setelah hasil bukan nol pertama, iterasi yang berhasil membiarkan status tidak tersentuh. Nilainya tidak menjadi nol hanya karena curl berhasil.
Bercabanglah pada perintah saat ini sebagai gantinya:
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
Alamat dan waktunya bersifat ilustratif. Ini menghapus variabel basi; ini tidak menentukan tindakan pemulihan mana yang tepat.
Jaga pengamatan tetap sempit. Permintaan bergantung pada proxy, rute lanjutan, tujuan, verifikasi TLS, dan hasil HTTP. Gangguan pada target dapat menggagalkannya saat layanan SOCKS sehat. Halaman HTTP 200 yang tak terduga juga dapat lolos pemeriksaan berbasis status saja tanpa menyediakan isi yang diharapkan.
Pilih kontrak respons yang terkendali dan pertahankan tahap kegagalan. Memulai ulang proxy pada setiap hasil curl bukan nol dapat mengganggu sesi yang sehat sementara masalah tujuan yang sebenarnya tetap tidak tertangani.