Есть ли простой способ проверить подключение к Интернету с консоли? Я пытаюсь поиграть в сценарии оболочки.Одна идея, которую я, кажется, должен wget --spider http://www.google.co.in/
и проверьте код ответа HTTP, чтобы определить, работает ли подключение к Интернету нормально. Но я думаю, что должен быть простой способ без необходимости проверять сайт, который никогда не выходит из строя ;)
Редактировать: Похоже, что может быть много факторов, которые можно рассмотреть индивидуально, и это хорошо. Мое намерение на данный момент состоит в том, чтобы проверить, не работает ли мой блог. Я настроил cron, чтобы проверять его каждую минуту.Для этого я проверяю код HTTP-ответа wget --spider на свой блог. Если его не 200, он уведомляет меня (я считаю, что это будет лучше, чем просто пинговать его, так как сайт может находиться под большой нагрузкой и может быть тайм-аут или отвечать очень поздно). Итак, вчера у меня возникла какая-то проблема с Интернетом. Локальная сеть была подключена нормально, но просто я не мог получить доступ ни к одному сайту. Поэтому я продолжаю получать уведомления, поскольку скрипт не смог найти 200 в ответе wget. Теперь я хочу убедиться, что он отображает мне уведомление, когда у меня есть подключение к Интернету.
Итак, проверка подключения к DNS и локальной сети для меня немного излишня, поскольку у меня нет особой необходимости выяснять, в чем проблема. Итак, что вы предлагаете, как мне это сделать?
Вот мой скрипт для постоянной проверки времени простоя моего блога:
#!/bin/bash# Sending the output of the wget in a variable and not what wget fetchesRESULT=`wget --spider http://blog.ashfame.com 2>&1`FLAG=0# Traverse the string considering it as an array of wordsfor x in $RESULT; do if [ "$x" = '200' ]; then FLAG=1 # This means all good fidoneif [ $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 fiexit
Таким образом, мне нужно проверять подключение к Интернету только в тех случаях, когда есть проблема с кодом ответа моего блога. Это немного тяжеловато (так как я не использую ping), но не должно давать никаких ложных срабатываний. Верно? Кроме того, как я могу каждый раз рандомизировать пинг на другой сайт, например, facebook, google, yahoo и т.д. Кроме того (я пытался избежать каких-либо операций ввода-вывода), я могу записать в файл журнала, с помощью которого я могу проверить количество проверок времени простоя, а затем пропустить дальнейшие проверки, пока сайт не выйдет из строя или не вызовет более длительные проверки (10 минут вместо каждой минуты). Что вы думаете?