Как грамотно из баша узнать жив ли конкретный ресурс типа www.domen.com/choto.html например?1. Надо сначала узнать распознается ли доменное имя DNS-ом?
2. Пингуется ли домен?
3. Существует ли ресурс сам?Может у кого то есть готовое решение ввиде фукции? Или какие-либо мысли?
host www.domen.com || exit 1 # Домен неизвестен
ping -c 5 www.domen.com || exit 2 # Домен не пингуется
wget -q www.domen.com/choto.html > /dev/null 2>&1 || exit 3 # Нет такого ресурсаЕсли хотите оформить это как функцию, замените exit на return:
check_domen () {
host www.domen.com || return 1 # Домен неизвестен
ping -c 5 www.domen.com || return 2 # Домен не пингуется
wget -q www.domen.com/choto.html > /dev/null 2>&1 || return 3 # Нет такого ресурса
}
А как это узнать за приемлемое, четко гарантированное время?
>А как это узнать за приемлемое, четко гарантированное время?Извините, а не могли бы вы поточнее сформулировать задачу, указав сразу все
условия? А то этак можно долго переписываться...P.S. К слову, проверки 1 и 2 являются излишними, так как проверка 3 включает
их в себя.
Задача такова:
1. У локалки есть выход через свой линух-рутер в инет, через 2-х провайдеров.
2. "Первый", назовем его так, провайдер, публикует динамически обновляющийся список маршрутов ресурсов, которые бесплатны для его клиентов на каком то своем ресурсе.
3. "Второй" дает просто доступ в инет, но у него дешевле внешний трафик.
4. Моя политика состоит в том чтобы, таблица маршрутов на моем линукс-рутере была такова, дефолт смотрит на второго (дешевого), а на первого смотрят роуты из списка который второй публикует, так как это бесплатно для меня.
5. Нужен скрипт, который по крону или как-то время от времени заглядывает на список бесплатных ресурсов второго и обновляет таблицу роутов у меня на рутере. Скрипт в принципе готов, в первом приближении, я его написал, он пашет, но надо довести до корректности в различных ситуациях.
6 В связи с чем и возникают такого рода примитивные вопросы:), так как, в принципе, я не админ, а токмо во исполнения воли..., админ в отпуску:)
>P.S. К слову, проверки 1 и 2 являются излишними, так как проверка
>3 включает
>их в себя.
Согласен, но они позволяют на более раннем этапе прерваться, налицо экономия времени, или нет? Вгет то долго что-то все это разбирает:(
>Согласен, но они позволяют на более раннем этапе прерваться, налицо экономия времени,
>или нет? Вгет то долго что-то все это разбирает:(Да никакой экономии тут нет. Если адрес неизвестен в мировом DNS или
недоступен, wget потратит не больше времени, чем host, nslookup или ping.
А чтобы не приходилось долго ждать, запускайте его с параметром -T 60.
Этот параметр задает время ожидания (в секундах), по прошествии которого
wget выдаст сообщение об ошибке. При желании это время можно уменьшить.