Mengapa semakan proksi shell kekal gagal selepas curl berjaya
Elakkan menyimpan kegagalan curl lama dalam pemboleh ubah shell selepas semakan proksi kemudian berjaya.
Proksi gagal sekali. Permintaan kemudian berjaya, namun pemantau terus mengumumkan kegagalan lain. Semak sama ada skrip mengingati status keluar semalam.
Corak ini mengemas kini pemboleh ubah hanya apabila curl gagal:
status=0
# Repeated inside a loop:
curl ... || status=$?
Selepas hasil bukan sifar pertama, lelaran yang berjaya membiarkan status tidak disentuh. Ia tidak menjadi sifar semata-mata kerana curl berjaya.
Bercabang pada arahan semasa sebaliknya:
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 masa adalah ilustrasi. Ini membuang pemboleh ubah lama; ia tidak menentukan tindakan pemulihan yang sesuai.
Kekalkan pemerhatian secara sempit. Permintaan bergantung pada proksi, laluan seterusnya, destinasi, pengesahan TLS dan hasil HTTP. Gangguan pada sasaran boleh menggagalkannya walaupun perkhidmatan SOCKS sihat. Halaman HTTP 200 yang tidak dijangka juga boleh lulus semakan berasaskan status sahaja tanpa menyediakan kandungan yang dijangka.
Pilih kontrak respons terkawal dan kekalkan peringkat kegagalan. Memulakan semula proksi pada setiap hasil curl bukan sifar boleh mengganggu sesi sihat sementara masalah destinasi sebenar kekal tidak ditangani.