linux выполнить скрипт при отсутствии пинга
Готовый скрипт проверки соединения с хостом (проверка инета или хоста)
Наткнулся на доработку, но конечного результата там не было. Выкладываю проверенный готовый скрипт:
достаточно код возврата от пинга проверять
и вообще много бесполезного кода
Чисто по-мелочи:
Вместо
Путь лога можно под себя исправить по желанию в одном месте. Например на маке рута для /ping.log не нужно.
Путевая подсказка спасибо.
Его надо доустанавливать.
Он рассчитан на использование в скриптах и даёт соответствующий вывод. Если есть возможность то имеет смысл поставить.
Путь лога можно под себя исправить по желанию в одном месте. Например на маке рута для /ping.log не нужно.
не надо засорять рут
А вот на 10.6.8 вывод:
а если доработать?
Вот было бы интересно увидеть такой скрипт, но не на один хост а на, к примеру 5? Т.е. он подряд пингует 5 хостов если не может пингануть один то выводит информацию, что третий недоступен и т.д.
Для этого есть готовые комерческие решения с уведомлением по мылу/sms/etc. когда кто умер и когда поднялся.
Команда ping в Linux
Всем знакомы ситуации, когда интернет на компьютере неожиданно разрывается, такое поведение можно наблюдать при использовании ADSL модемов, Wifi на большом расстоянии, GSM и других подобных ненадежных технологий. Быстро выяснить есть ли на компьютере интернет можно с помощью утилиты ping.
Но область ее применения намного шире, ее используют сетевые администраторы для проверки доступности удаленного узла в сети, она применяется в различных скриптах и многих других местах. В этой статье будет рассмотрена команда ping в Linux, мы поговорим о том, как пользоваться утилитой, как она работает, рассмотрим ее опции и возможности.
Как работает ping?
Попытаемся разобраться что делает команда ping. Итак, когда вы отправляете запрос ping удаленному узлу, утилита устанавливает для каждого пакета уникальный идентификатор, а также TTL и время отправки пакета. Если хост доступен, он отправляет ответ, на основе времени отправки утилита может вычислить время прохождения пакета туда и обратно. Затем отправляется следующий пакет. В конце рассчитывается общее количество отправленных и принятых пакетов, процент потерь и другие данные.
Команда Ping
Теперь нам осталось немного попрактиковаться. Но перед тем, как мы перейдем к практике давайте рассмотрим синтаксис команды и ее опции. Синтаксис довольно прост:
$ ping опции адрес_узла
Формат команды ping очень прост. В качестве адреса узла можно передавать как ip адрес, так и доменное имя. Опции настраивают поведение утилиты. Рассмотрим основные из них:
Теперь, когда мы рассмотрели основные параметры команды ping и ее синтаксис, пришло время практики, дальше поговорим о том, как сделать ping определенного узла в Linux.
Как пользоваться Ping?
Для проверки работоспособности сети часто используется программа ping любого сайта, который всегда доступен, например, google.com или еще проще и короче ya.ru. Вам будет достаточно передать утилите в параметрах этот адрес, она сама найдет ip и сделает все нужное:
Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:
Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:
Выводы
В этой статье мы рассмотрели что такое команда ping в linux, как ее использовать основные параметры и методы применения. Этот очень простой инструмент можно применять для тестирования неполадок сети и их исправления. В этом плане утилита может стать незаменимой.
Checking host availability by using ping in bash scripts
I want to write a script, that would keep checking if any of the devices in network, that should be online all day long, are really online. I tried to use ping, but
gives 1 no matter if I enter valid or invalid ip address. How can I check if a specific address (or better any of devices from list of ip addresses) went offline?
10 Answers 10
Ping returns different exit codes depending on the type of error.
0 means host reachable
2 means unreachable
You don’t need the backticks in the if statement. You can use this check
The if command checks the exit code of the following command (the ping). If the exit code is zero (which means that the command exited successfully) the then block will be executed. If it return a non-zero exit code, then the else block will be executed.
I can think of a one liner like this to run
Replace 127.0.0.1 with IP or hostname, replace echo commands with what needs to be done in either case.
Code above will succeed, maybe try with an IP or hostname you know that is not accessible.
FYI, I just did some test using the method above and if we use multi ping (10 requests)
the result of multi ping command will be «0» if at least one of ping result reachable, and «1» in case where all ping requests are unreachable.
This is a complete bash script which pings target every 5 seconds and logs errors to a file.
This seems to work moderately well in a terminal emulator window. It loops until there’s a connection then stops.
The \a at the end is trying to get a bel char on connect. I’ve been trying to do this in LXDE/lxpanel but everything halts until I have a network connection again. Having a time started out as a progress indicator because if you look at a window with just «down» on every line you can’t even tell it’s moving.
I liked the idea of checking a list like:
but that snippet doesn’t care if a host is unreachable, so is not a great answer IMHO.
unixforum.org
Форум для пользователей UNIX-подобных систем
скрипт для пинга (при отсутствии пинга=>разрыв соединения и переподключение)
Модератор: Bizdelnick
скрипт для пинга
Сообщение foxIG » 13.04.2007 20:13
Re: скрипт для пинга
Сообщение sash-kan » 13.04.2007 20:20
Re: скрипт для пинга
Сообщение foxIG » 13.04.2007 20:46
Re: скрипт для пинга
Сообщение sash-kan » 13.04.2007 21:23
Re: скрипт для пинга
Сообщение foxIG » 13.04.2007 21:38
после получаса соединения падает скорость почти до 0(входящий трафик вообще не идёт), те на запросы ответов нет
# /etc/ppp/chat
» AT
TIMEOUT 45
ABORT ‘BUSY’
ABORT ‘NO CARRIER’
ABORT ‘NO DIAL TONE’
ABORT ‘NO ANSWER’
ABORT ‘ERROR’
REPORT ‘CONNECT’
REPORT ‘NO CARRIER’
REPORT ‘NO DIAL TONE’
REPORT ‘NO ANSWER’
REPORT ‘ERROR’
» ATE0
SAY ‘. соединение с GPRS. ‘
» ‘AT+CGDCONT=1,»IP»,»internet»‘
» ATS0=0
» AT+CGQREQ=1,1,1,1,5,18
» AT+CGQMIN=1,1,1,1,5,18
» AT+CGATT?
» ATDT*99***1#
TIMEOUT 22
CONNECT «»
SAY ‘ соединение с GPRS установлено’
вот параметры, может еще что нибудь добавить?
Как проверить доступ в интернет с помощью скрипта bash в linux?
вы можете понять мой вопрос. Я не знаю, почему это так, но я думаю, что проблема связана с школа-интернет-сервис. Есть предложения? (Я думаю wget может быть хорошей альтернативой, но как использовать?)
8 ответов
Если школа фактически отключает свой маршрутизатор вместо перенаправления всего трафика на страницу «почему ты не в постели», тогда нет необходимости загружать всю веб-страницу или отправлять HTTP-заголовки. Все, что вам нужно сделать, это просто установить связь и проверить, слушает ли кто-то.
это выведет » соединение с портом 8.8.8.8 53 [tcp/domain] успешно!»и возвращают значение 0, если кто-то слушает.
Если вы хотите использовать его в оболочку сценарий:
установить fping: > меньше проблем, чем ping.
использовать например так:
выход произведет smth как:
число в конце строки показывает длительность предыдущего состояния, т. е. 19 вверх, 7 сек вниз
используя приведенный выше пример, я написал этот скрипт для регистрации состояния вашего соединения: https://gist.github.com/cganterh/ffc2fffa8263857cbece
без wget
надежная ping в отдельном скрипте bash:
поместите это в отдельный скрипт. Он справится разных ситуациях в сети как (1) не подключен к сети, (2) подключен к сети, но не может получить доступ к интернету (или, по крайней мере, Google), и (3) подключен к интернету.
вы можете позже использовать exit code скрипта для проверки подключения, например