Я полагаю, что локон сделает эту работу. Я написал в сценарии:
#!/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
Проблема здесь не в том, что я делаю, я не могу заставить ее прекратить печатать следующее на стандартный вывод:
% Total % Received % Xferd Average Speed Time Time Time Current
Я хочу, чтобы cronjob запустил этот скрипт, и если он напишет такое сообщение, то каждый раз, когда я его запускаю, я получаю электронное письмо, потому что что-то было напечатано на stdout в cron, даже если с сайтом все в порядке.
Как я могу получить код состояния без попадания мусора в стандартный вывод? Этот код работает за исключением бонусного барахла на стандартный вывод, который не позволяет мне его использовать.
ты хочешь
Это даст вам код HTTP_STATUS как единственный выход.
источник
Я бы сделал это так, чтобы убедиться, что я перенаправлен на конечный хост и получу от него ответ:
источник
Используйте это как ваше условие ...
источник
Как указано выше, curl может предоставить http-ответ:
Пример 1, в котором
-s
мы молчим о прогрессе и-o /dev/null
позволяем нам отбросить ответ, но-w
вы здесь ваш союзник:Это может быть дополнительно упрощено изначально в curl, запрашивая url_effective и redirect_url:
В примере 2 мы видим наш первоначальный HTTP-ответ, оригинальные запрошенные домены и перенаправляемый сервер ответил:
Однако, если вы в конечном итоге хотите установить ответ 200 даже после перенаправления 301 или 302: тогда вы можете отказаться от вышеупомянутого «redirect_url»
Пример 3 мы добавляем,
-L
который инструктирует curl преследовать редирект (ы):источник
some_user
указанием фактического имени) или «Как указали другие»