Есть ли простой способ проверить интернет-соединение с консоли? Я пытаюсь поиграться в сценарии оболочки. Мне кажется, одна идея - проверить код ответа HTTP, чтобы понять, работает ли интернет-соединение нормально. Но я думаю, что должен быть простой способ без необходимости проверять сайт, который никогда не падает;)wget --spider http://www.google.co.in/
Редактировать: Кажется, что может быть много факторов, которые могут быть рассмотрены индивидуально, хорошо. В данный момент я собираюсь проверить, не закрылся ли мой блог. У меня есть настройка cron, чтобы проверить это каждую минуту. Для этого я проверяю HTTP-код ответа wget --spider на свой блог. Если его нет 200, он уведомляет меня (я думаю, что это будет лучше, чем просто пинговать его, так как сайт может быть загружен слишком сильно, а время ожидания истекло или он откроется слишком поздно). Вчера была проблема с интернетом. Локальная сеть была подключена, но я просто не мог получить доступ к любому сайту. Поэтому я продолжаю получать уведомления, так как скрипт не может найти 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
Таким образом, мне нужно проверять подключение к Интернету только там, где есть проблема с моим кодом ответа блога. Это немного тяжело (так как я не использую пинг), но не должно давать никаких ложных срабатываний. Правильно? Кроме того, как я могу случайным образом пинговать на другой сайт каждый раз, например, Facebook, Google, Yahoo и т. Д. Кроме того (я пытался избежать ввода-вывода) я могу записать в файл журнала, с помощью которого я могу проверить количество проверок простоя и затем пропустите дальнейшие проверки, пока сайт не выйдет из строя или вызовите более длительные проверки (10 минут вместо каждой минуты). Что вы думаете?
источник
Ответы:
Проверка, работает ли конкретный сайт
Во-первых, доступно несколько хороших онлайн-сервисов мониторинга. Чтобы выбрать один, Pingdom включает бесплатную учетную запись для мониторинга одной цели. (Отказ от ответственности: я никоим образом не связан с Pingdom).
Во-вторых, использование
wget --spider
для собственного сценария - хорошая идея. Вы получите некоторые ложные срабатывания, когда ваш компьютер не работает, или когда ваш DNS-сервер не работает. Проверка кода возврата является простым способом сделать это:Еще раз, есть недостатки в этом подходе. Если ваш провайдер кэшировал вашу DNS-запись, но DNS-сервер не работает, другие не смогут получить доступ к вашему сайту, даже если мониторинг говорит, что все в порядке. Вы можете написать короткий обходной путь
host
, напримерhost example.com <your dns server IP>
. Это вернет ошибку, если DNS-сервер не отвечает, даже если OpenDNS или DNS-сервер вашего собственного провайдера работает нормально.Проверка работоспособности интернета
Не существует простого способа справиться с этим в каждом случае.
Например, вы можете запустить
ping -c1
несколько известных сайтов (например, www.google.com, facebook.com и ping.funet.fi) и проверить коды возврата, чтобы определить, достижим ли какой-либо пункт назначения. Вы можете автоматически проверить код возврата с помощью переменной$?
. Параметр-c1
ограничивает количество пинг-пакетов до одного.Вы можете столкнуться с проблемами с некоторыми общедоступными Wi-Fi, когда есть шлюз входа в систему, который перенаправляет все запросы и запросы HTTP. Если это так, вы можете получить пинг-ответы и коды ошибок без ошибок HTTP, даже если у вас нет доступа к другим сайтам.
Если вы хотите проверить состояние кабеля, вы можете использовать
Из вывода (выдержка):
Тем не менее, это не говорит о том, действительно ли у вас есть подключение или нет, просто подключен ли кабель и что-то на другом конце.
источник
host
(DNS запрос). Это тоже очень быстро.Я использую этот метод ...
источник
ping -c 1 8.8.8.8
иping -c 1 www.google.com
. Как так?Я просто использовал
который приостанавливается до тех пор, пока сетевой менеджер не обнаружит сетевое соединение. Работал хорошо. Вы можете делать другие вещи с этим тоже.
источник
Проверка того, работает ли сайт, обычно выполняется с помощью такого инструмента мониторинга, как
nagios
. Это будет постоянно контролировать сайт, и может уведомить вас о сбоях.При проверке подключения к Интернету из командной строки я выполняю ряд шагов:
ping google.com
(проверяет DNS и известный доступный сайт).wget
илиw3m
для загрузки страницы.Если Интернет не работает, диагностируйте внешнюю сторону.
Если Интернет работает, но сайт не работает, проверьте с
w3m http://isup.me/example.com
заменойexample.com
сайта, который появляется вниз. Используйте wget, lynx или любой другой браузер командной строки, который у вас есть, если у вас не установлен браузер w3m.источник
if ! wget --spider http:///example.com; then
.[ $? != 0 ]
такой же, как тест! command
. Задокументировано, что wget возвращает 0 в случае успеха, а не 0 в случае неудачи. If ведет себя одинаково, каким бы способом вы его ни кодировали. Если wget вернет ошибку 200, ответ провалится в любом случае. То же самое, если он возвращает 0 для кода ответа, отличного от 200.Это сценарий оболочки, который я использую для проверки интернет-соединения:
alarm.sh
Вам нужно будет установить curl и mpg321
Вам понадобится звуковой файл .mp3, переименованный в alarm.mp3 в той же папке, если вы хотите использовать функцию звуковой сигнализации. Наконец, настройте URL веб-сайта и egrep в соответствии с вашими потребностями.
источник
egrep -q
вместоegrep ... > /dev/null
while
цикл?alarm.sh
в wd, поэтому, если вы вызовете этот скрипт из другого каталога, это приведет либо к ошибке, либо, еслиalarm.sh
в wd есть скрипт , который будет вызываться, он вызовет его вместо этого. Так что это плохая практика. Вы можете использовать"$0"
вместо этого, ноwhile
цикл будет лучше.Проверка работоспособности интернета
Из вывода (выдержка):
Однако, как уже упоминалось другими, это не говорит о том, действительно ли у вас есть подключение или нет. Например. Вы можете быть подключены к маршрутизатору, а маршрутизатор не обязательно подключен к Интернету.
источник
nm-tool
был удален в Ubuntu 15.04+, но вы можете использоватьnmcli
вместо этого. Например[[ $(nmcli -f STATE -t g) = connected ]]
nmcli -f STATE -t nm
хорошо, это независимость от веб-сайтов!nm-tool
иnmcli
скажет вам только, подключены ли вы к локальной сети или нет, то есть подключены ли вы к домашней сети Wi-Fi / Ethernet. Он не скажет вам, можете ли вы достичь чего-либо за пределами вашей локальной сети, например, Интернета.Я использую этот метод:
Он попытается подключиться к известному веб-сайту, и если он сможет подключиться к нему, мы предположим, что есть Интернет.
источник
Мне нужна была помощь с тем же вопросом, и я получил ответ следующим образом:
источник
nm-online
команды ... Она вернет 0, если все в порядке. Обычный во всехUNIX
снарядах.Проверка работоспособности интернета не так тривиальна. ping - это ICMP, поэтому он может работать, даже если веб-прокси не работает. Нечто подобное происходит с DNS, если вы тестируете с IP.
Так как мое интернет-соединение нестабильно, я создал этот сценарий ( на основе этого ), который издает мягкий аккорд, чтобы позвонить мне, а также использует уведомление Ubuntu, когда интернет-соединение возвращается:
источник
Я искал скрипт, который бы непрерывно проверял мое интернет-соединение, он запускался всякий раз, когда мой сервер работал, и я сделал это:
Сначала установите fping
Создайте сценарий инициализации в папке /etc/init.d со следующим содержимым (я назвал его testcon)
Создайте скрипт в папке /etc/init.d со следующим содержимым (я назвал его testcond)
Затем я запускаю команды ниже, чтобы добавить к запуску:
перезагружать
источник
Я столкнулся со случайным сбросом подключений Wi-Fi
Broadcom BCM94331CD
микросхемой. Я разработал следующий скрипт bash (бесконечный цикл), проверяющий каждую секунду, работает ли подключение к Интернету через Wi-Fi. Другая из командной строки , предложенная здесь будет ждать по крайней мере 5 до 10 секунд до закрытия со статусом т.е.ping
. В то же время я ищу окончательное решение, а также.По результатам аскубунту, мне придется очищать
bcmwl-kernel-source
пакет по мере использованияfirmware-b43-installer
иb43-fwcutter
.Спасибо всем за их предложения (выше).
Этот сценарий необходимо добавить в автозагрузку программ, и ему также не нужны
super user
привилегии для запуска.источник