Saya pikir ikal akan melakukan pekerjaan itu. Saya menulis dalam sebuah skrip:
#!/bin/sh
function test {
res=`curl -I $1 | grep HTTP/1.1 | awk {'print $2'}`
if [ $res -ne 200 ]
then
echo "Error $res on $1"
fi
}
test mysite.com
test google.com
Masalahnya di sini adalah apa pun yang saya lakukan, saya tidak bisa menghentikannya untuk mencetak di bawah ini ke stdout:
% Total % Received % Xferd Average Speed Time Time Time Current
Saya ingin cronjob menjalankan skrip ini dan jika ia menulis pesan seperti itu maka setiap kali saya menjalankannya saya akan mendapatkan email karena sesuatu telah dicetak ke stdout di cron, walaupun situsnya mungkin baik-baik saja.
Bagaimana cara mendapatkan kode status tanpa sampah ke stdout? Kode ini berfungsi kecuali bonus sampah ke stdout yang mencegah saya menggunakannya.
kamu ingin
Itu akan memberi Anda kode HTTP_STATUS sebagai satu-satunya hasil.
sumber
Saya akan melakukannya seperti ini untuk memastikan saya dialihkan ke host terakhir dan mendapatkan respons dari itu:
sumber
Gunakan ini sebagai kondisi Anda ...
sumber
seperti yang ditunjukkan di atas ikal asli dapat memberikan respons http:
Contoh 1 dengan
-s
kami membungkam kemajuan &-o /dev/null
membiarkan kami membuang respons tetapi-w
sekutu Anda di sini:Ini dapat disederhanakan lebih lanjut secara native di curl dengan meminta url_effective dan redirect_url:
Contoh 2 kita melihat respons http awal kami, domain yang diminta asli, dan mengarahkan server merespons dengan:
Namun jika Anda pada akhirnya ingin membangun 200 tanggapan bahkan setelah pengalihan 301 atau 302: Maka Anda dapat dan menghapus 'redirect_url' yang disebutkan di atas.
Contoh 3 kita tambahkan
-L
yang menginstruksikan curl untuk mengejar redirect:sumber
some_user
nama sebenarnya) atau "Seperti yang ditunjukkan orang lain"