Есть ли простой способ проверить подключение к Интернету с консоли? Я пытаюсь поиграть в сценарий оболочки.
Одна из моих идей заключается в wget --spider http://www.google.co.in/
и проверке кода ответа HTTP для интерпретации, если интернет-соединение работает нормально. Но я думаю, что должен быть простой способ без необходимости проверки сайта, который никогда не сбой;)
Изменить: Похоже, что может быть много факторов, которые можно индивидуально изучить, хорошо. Мое намерение на данный момент состоит в том, чтобы проверить, отключен ли мой блог. У меня есть настройка cron, чтобы проверять каждую минуту. Для этого я проверяю код ответа HTTP wget -spider на свой блог. Если он не 200, он уведомляет меня (я считаю, что это будет лучше, чем просто пинговать его, так как сайт может быть тяжелой нагрузкой и может быть тайм-аут или ответить очень поздно). Теперь вчера была проблема с моим Интернетом. LAN была подключена нормально, но я просто не мог получить доступ к сайту. Поэтому я продолжаю получать уведомления, так как сценарий не может найти 200 в ответе wget. Теперь я хочу убедиться, что он отображает мне уведомление, когда у меня есть подключение к Интернету.
Итак, проверка подключения к DNS и локальной сети для меня немного переполнена, поскольку у меня нет такой специфической необходимости, чтобы выяснить, какая проблема. Итак, что вы предлагаете, как я это делаю?
Вот мой скрипт, чтобы продолжать проверять время простоя для моего блога:
#!/bin/bash
# Sending the output of the wget in a variable and not what wget fetches
RESULT='wget --spider http://blog.ashfame.com 2>&1'
FLAG=0
# Traverse the string considering it as an array of words
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means all good
fi
done
if [ $FLAG -eq '0' ]; then
# A good point is to check if the internet is working or not
# Check if we have internet connectivity by some other site
RESULT='wget --spider http://www.facebook.com 2>&1'
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means we do have internet connectivity and the blog is actually down
fi
done
if [ $FLAG -eq '1' ]; then
DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."
fi
fi
exit
Таким образом, мне нужно проверить подключение к Интернету только там, где есть проблема с моим кодом ответа блога. Это немного тяжело (поскольку я не использую ping), но не должен давать никаких ложных срабатываний. Правильно? Также, как я могу рандомизировать pinging на другой сайт каждый раз, например, facebook, google, yahoo и т. Д. Также (я пытался избежать ввода / вывода) я могу записать в файл журнала, с помощью которого я могу проверить количество простоя и затем пропустите дальнейшие проверки до тех пор, пока сайт не снизится или не вызовет более длительные проверки (10 минут вместо каждого мин). Как вы думаете?