Sądzę, że curl zrobiłby robotę. Napisałem w skrypcie:
#!/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
Problem tutaj nie ma znaczenia, co robię, nie mogę go zatrzymać, aby przestał drukować poniżej na standardowe wyjście:
% Total % Received % Xferd Average Speed Time Time Time Current
Chcę, aby cronjob uruchomił ten skrypt i jeśli napisze taką wiadomość, to za każdym razem, gdy go uruchomię, dostanę wiadomość e-mail, ponieważ coś zostało wydrukowane na standardowe wyjście w cronie, nawet jeśli strona może być w porządku.
Jak uzyskać kod stanu bez wprowadzania śmieci do standardowego wyjścia? Ten kod działa oprócz bonusowej śmieci na standardowe wyjście, uniemożliwiającej mi jego użycie.
chcesz
To da ci kod HTTP_STATUS jako jedyne wyjście.
źródło
Zrobiłbym to w ten sposób, aby upewnić się, że nastąpi przekierowanie do hosta końcowego i otrzymam od niego odpowiedź:
źródło
Użyj tego jako warunku ...
źródło
jak wskazano powyżej curl może natywnie dostarczyć odpowiedź http:
Przykład 1, w
-s
którym wyciszamy postęp i-o /dev/null
pozwalasz nam skasować odpowiedź, ale-w
czy jesteś tutaj twoim sprzymierzeńcem:Można to dodatkowo uprościć natywnie w curl, prosząc o url_effective i redirect_url:
W przykładzie 2 widzimy naszą początkową odpowiedź http, pierwotnie żądane domeny i przekierowujemy serwer z odpowiedzią:
Jeśli jednak ostatecznie chcesz ustalić odpowiedź 200, nawet po przekierowaniu 301 lub 302: Następnie możesz i upuścić wspomniany „redirect_url”
Przykład 3 dodajemy,
-L
który instruuje curl, aby ścigał przekierowania:źródło
some_user
będącego faktyczną nazwą) lub „Jak inni wskazali”