Linux скрипт если пинга нет то

Готовый скрипт проверки соединения с хостом (проверка инета или хоста)

Наткнулся на доработку, но конечного результата там не было. Выкладываю проверенный готовый скрипт:

может лучше в /tmp ? а то пускать от рута пингалку както некошерно

достаточно код возврата от пинга проверять

и вообще много бесполезного кода

Чисто по-мелочи:
Вместо

Путь лога можно под себя исправить по желанию в одном месте. Например на маке рута для /ping.log не нужно.

Путевая подсказка спасибо.

Его надо доустанавливать.

Он рассчитан на использование в скриптах и даёт соответствующий вывод. Если есть возможность то имеет смысл поставить.

Путь лога можно под себя исправить по желанию в одном месте. Например на маке рута для /ping.log не нужно.

не надо засорять рут

А вот на 10.6.8 вывод:

а если доработать?

Вот было бы интересно увидеть такой скрипт, но не на один хост а на, к примеру 5? Т.е. он подряд пингует 5 хостов если не может пингануть один то выводит информацию, что третий недоступен и т.д.

Для этого есть готовые комерческие решения с уведомлением по мылу/sms/etc. когда кто умер и когда поднялся.

Источник

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/peers/
debug
115200
crtscts
modem
lock
novj
persist
nodetach
noipdefault
usepeerdns
defaultroute
connect ‘/usr/sbin/chat -e -f /etc/ppp/chat/connect -v’
/dev/ttyACM0
mtu 1500
user life
nobsdcomp
nodeflate

# /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 установлено’

вот параметры, может еще что нибудь добавить?

Читайте также:  Windows 10 максимальная х64

Источник

Про Debian

Набросал на днях простенький скрипт, которые перезапускает сеть при потере пинга.

Тем, кому нужно — поймут как подправить. Пишу в файл специально из некоторых соображений, которые были продиктованы изначальной задачей.

#!/bin/bash
ping -c 3 www.ru > /root/ping
a=$(cat /root/ping | tail -n2 | head -n1 | awk <'print $6'>| sed s/%//)
echo $a
if [ $a != 0 ]
then date > /root/fail && ifdown eth0 && sleep 2 && ifup eth0
fi
echo T

При потере пакетов, отличной от нуля — сервер делает пометку в /root/fail, делает ifdown eth0, ждёт 2 секунды и делает ifup eth0.

При необходимости — поменяйте строку then date > /root/fail && ifdown eth0 && sleep 2 && ifup eth0. Например на pon/poff

Запускать в screen, само собой (или в локальной консоли, если туда есть доступ). Будьте внимательны при остановке скрипта.

запускать так:
while [ 1 ]; do ./root/ping.sh; echo pause; sleep 2; echo script; done

echo pause; sleep 2; echo script; — для того, чтобы не стопнуть скрипт во время его выполнения.

UPD:
Более прогрессивная версия +)

#!/bin/bash
doping () <
ping -c 3 8.8.8.8 > /dev/null
>

dook () <
#what to do if ping ok?
echo «ping ok»
>

doerror () <
# what to do if ping failed?
echo «error»
echo «$(date) ping failed! i am restarting network» >> /var/log/network-fail.log
>

doping && dook || doerror
# this is the end of script.

Источник

Скрипт BASH проверяющий доступность сайта/ip-адреса.

Сегодня в статье разберем пример написания скрипта для проверки доступности ресурса при помощи BASH в Linux. Может кому то будет полезен :).

Скрипт доступности ресурса

  1. Создадим текстовый файл ping_test.sh со следующим содержанием:

Скрипт будет проверять доступность ресурса при помощи команды ping до тех пор пока данный ресурс не выйдет на связь. Для автоматизации давайте запишем задание в crontab. Задание будет срабатывать при перезагрузке системы.

Также если вам необходимо чтобы еще отправлялось уведомление на почту, то скрипт примет такой вид:

  • IP=»10.5.5.1″ — IP-адрес для мониторинга. Через пробел можно указать несколько адресов.
  • ping -c 2 -W 1 — количество пакетов посылаемых на сервер
  • -f «кому@yandex.ru» — указываю свою почту
  • -t «от_кого@yandex.ru» — указываем почту от которой будем отправлять.
  • -u «Проблема с доступностью сервера» — тема сообщения
  • -m «Сообщение от $(hostname) . $ADDR недоступен с $(date)» — Содержание сообщения
  • -xu «логин» — Логин от вашей почты
  • -xp «пароль» — Пароль от вашей почты
  • -s «smtp.yandex.ru» — Адрес smtp сервера отправки почты, в моем случае это yandex
  • -o «message-charset=utf-8» — Кодировка сообщения, без нее будет крякозябры.
  1. Даем права на исполнение

Для того чтобы сработала отправка почты нужно установить пакет sendemail

  1. Радуемся, через заданный промежуток времени в событии будет высвечено сообщение о статусе.

Скрипт доступности ресурса каждые 10 секунд

Запускать задание через каждых 10 секунд:

Читайте также:  Хороший плеер для mac os

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Источник

Команда ping в Linux

Всем знакомы ситуации, когда интернет на компьютере неожиданно разрывается, такое поведение можно наблюдать при использовании ADSL модемов, Wifi на большом расстоянии, GSM и других подобных ненадежных технологий. Быстро выяснить есть ли на компьютере интернет можно с помощью утилиты ping.

Но область ее применения намного шире, ее используют сетевые администраторы для проверки доступности удаленного узла в сети, она применяется в различных скриптах и многих других местах. В этой статье будет рассмотрена команда ping в Linux, мы поговорим о том, как пользоваться утилитой, как она работает, рассмотрим ее опции и возможности.

Как работает ping?

Утилита ping — это очень простой инструмент для диагностики сети. Она позволяет проверить доступен удаленный хост или нет и все. Для этого утилита проверяет, может ли хост отвечать на сетевые запросы с помощью протокола ICMP.

Надеюсь, не нужно говорить, что все данные по сети передаются в виде небольших пакетов. Программа передает небольшой пакет с данными ICMP и ожидает получить обратно пакет ответа, если получает, то считается что удаленный узел доступен. ICMP или Internet Control Message Protocol — это надстройка над протоколом IP, которая используется для передачи служебных сообщений и сообщений и ошибках.

Протокол ICMP может передавать только два типа пакетов — это сообщения с отчетами про ошибки и сообщения запросов. В свою очередь, сообщения запросов делятся на:

  • Сообщение эхо-запрос;
  • Сообщение эхо-ответ.

Попытаемся разобраться что делает команда ping. Итак, когда вы отправляете запрос ping удаленному узлу, утилита устанавливает для каждого пакета уникальный идентификатор, а также TTL и время отправки пакета. Если хост доступен, он отправляет ответ, на основе времени отправки утилита может вычислить время прохождения пакета туда и обратно. Затем отправляется следующий пакет. В конце рассчитывается общее количество отправленных и принятых пакетов, процент потерь и другие данные.

Команда Ping

Теперь нам осталось немного попрактиковаться. Но перед тем, как мы перейдем к практике давайте рассмотрим синтаксис команды и ее опции. Синтаксис довольно прост:

$ ping опции адрес_узла

Формат команды ping очень прост. В качестве адреса узла можно передавать как ip адрес, так и доменное имя. Опции настраивают поведение утилиты. Рассмотрим основные из них:

  • -4 — использовать только ipv4 (по умолчанию);
  • -6 — использовать только ipv6;
  • -A — адаптивный режим, время между отправками пакета адаптируется к времени передачи и приема пакета, но не меньше чем 200мс;
  • -b — разрешить ping широковещательного адреса;
  • — количество пакетов, которые нужно отправить;
  • -D — выводить время в виде UNIX timestamp;
  • -f — режим флуда, в этом режиме пакеты передаются без задержек, может использоваться для совершения DoS атак на отдельные узлы. Количество точек, которые выводит утилита обозначает количество потерянных пакетов;
  • -i — интервал в секундах между отправкой пакетов;
  • -I — использовать этот сетевой интерфейс для отправки пакетов;
  • -l — режим перегрузки, отправляется очень много пакетов и система не следит за ответными пакетами;
  • -n — не получать домены для ip адресов;
  • -r — игнорировать таблицы маршрутизации и отправить пакет на указанный интерфейс;
  • -s — размер одного пакета;
  • -t — установить TTL вручную;
  • -v — более подробный вывод.
Читайте также:  Как расширить диск с за счет диска d windows 10 без потери данных

Теперь, когда мы рассмотрели основные параметры команды ping и ее синтаксис, пришло время практики, дальше поговорим о том, как сделать ping определенного узла в Linux.

Как пользоваться Ping?

Для проверки работоспособности сети часто используется программа ping любого сайта, который всегда доступен, например, google.com или еще проще и короче ya.ru. Вам будет достаточно передать утилите в параметрах этот адрес, она сама найдет ip и сделает все нужное:

Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:

  • packets transmitted — отправлено пакетов;
  • received — получено пакетов;
  • packet loss — процент потерянных пакетов;
  • time — обще время работы;
    rtt min/avg/max/mdev — минимальное время/среднее время/максимальное время/квадратичное отклонение.

Если выполнение команды ping не остановить, то пакеты могут отправляться очень долгое время, это создает дополнительную нагрузку на сервер и поэтому не желательно. Вы можете сразу в вызове команды ограничить количество отправляемых пакетов с помощью опции -c:

Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:

Следующий вид отправки ping сообщений, это ping флуд. С помощью таких пакетов можно выполнить нагрузочное тестирование канала или даже заглушить интернет соединение на одной из машин. Но эти функции можно использовать только с правами суперпользователя. Для организации ping флуда укажите опцию -f:

По умолчанию, в обычном режиме, каждый следующий пакет отправляется, когда получен ответ на предыдущий. Но вы можете сами установить интервал между отправкой пакетов -i:

ping -i 0.2 losst.ru

Здесь программа ping выполняет так званный, настраиваемый флуд, вы указываете с какой интенсивностью нужно отправлять пакеты. С помощью опции -D вы можете увидеть Unix Timestamp для каждого сообщения:

Выводы

В этой статье мы рассмотрели что такое команда ping в linux, как ее использовать основные параметры и методы применения. Этот очень простой инструмент можно применять для тестирования неполадок сети и их исправления. В этом плане утилита может стать незаменимой.

Источник

Оцените статью