If ping linux bash

if ping 10.10.0.1 then beep fi

Возникла необходимость написать просто скрипт, должен делать он следующее. Если машина лежит, никаких действий, если же начинает пинговаться пищит спикер. Я только начал изучать shell scripting и все как бы хорошо, но получается это реализовать только если команде ping задать count, если без -c ключа, то получается нужно прерывать программу, что бы услышать сигнал. код прилагаю

man ping

ping -w — задание максимального времени ожидания

Очевидно

if ping -c 3 10.10.0.1
then echo host online
else beep
fi

А ещё можно воспользоваться зарезервированным символом «!», который возвращает 0 в случае ненулевого кода возврата и 1 в случае нулевого:
if ! ping -c 3 10.10.0.1
then beep
fi

А ещё можно воспользоваться конструкцией «||»:
ping -c 3 10.0.0.1 || beep

Спасибо, как раз то, что надо

Полезный ключик -a, особенно когда подымаешь сеть на машине с клавиатурой но без монитора 🙂

Источник

Вывод результата ping’a

Привет. Хочу получить в удобоваримой форме результат работы утилиты ping. Допустим, ответ получен — 1, не получен — 0. Как это можно сделать на bash? Спасибо.

Только это наоборот, 0, если ответ получен и 1, если нет.

Попробуй сделать «ping -c3 x.x.x.x ; echo $?» Если ping не получает ответных пакетов, то он завершит работу с кодом возврата 1.

#!/bin/bash
#
if /bin/ping -c 2 192.168.0.1 > /dev/null 2> /dev/null
then
echo 1;
else
echo 0;
fi

Спасибо, помогло, а где прочесть про $?

То, что нужно, спасибо.

$? — это exit code. Его возвращают все программы, и обычно он равен 0 в случае удачного завершения работы и какому-дибо другому числу в противоположном случае.

Читайте также:  Файловая система windows типы файлов

Конструкции «||» и «&&», а также директива «if» в bash в примере ниже проверяют именно его.

Спасибо, взял на заметку.

А тут можно в одном посте отвечать всем сразу?

ИМХО, если нужно ответить нескольким людям сразу, нужно отвечать на своё сообщение, используя . для привлечения внимания адресатов.

-q Quiet output. Nothing is displayed except the summary lines at startup time and when finished.

Его возвращают все программы, и обычно он равен 0 в случае удачного завершения работы и какому-дибо другому числу в противоположном случае.

не «обычно», а «всегда».

возвращаются коды с ошибками 1..63

коды 64..127 зарезервированы для пользовательских скриптов

коды 128..255 возвращаются в случае прерывания.

Источник

Скрипт 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. Даем права на исполнение
Читайте также:  Цифровой сертификат для проектов vba windows 10

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

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

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

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

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

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

Источник

Как проверить доступ в интернет с помощью скрипта bash в linux?

в моей школе Интернет недоступен(каждую ночь после 23: 0 школа убьет интернет, чтобы положить нас в постель >..ping -w1 .

то есть, когда я использую: ping -q -w1 -c1 8.8.8.8 чтобы проверить, если интернет вверх / вниз, он будет там без вывода и не выходит, так же, как я использую один cat .

вы можете понять мой вопрос. Я не знаю, почему это так, но я думаю, что проблема связана с школа-интернет-сервис. Есть предложения? (Я думаю wget может быть хорошей альтернативой, но как использовать?)

8 ответов

Если школа фактически отключает свой маршрутизатор вместо перенаправления всего трафика на страницу «почему ты не в постели», тогда нет необходимости загружать всю веб-страницу или отправлять HTTP-заголовки. Все, что вам нужно сделать, это просто установить связь и проверить, слушает ли кто-то.

это выведет » соединение с портом 8.8.8.8 53 [tcp/domain] успешно!»и возвращают значение 0, если кто-то слушает.

Если вы хотите использовать его в оболочку сценарий:

используйте опцию timeout -t :

установить fping: > меньше проблем, чем ping.

использовать например так:

выход произведет smth как:

число в конце строки показывает длительность предыдущего состояния, т. е. 19 вверх, 7 сек вниз

используя приведенный выше пример, я написал этот скрипт для регистрации состояния вашего соединения: https://gist.github.com/cganterh/ffc2fffa8263857cbece

Читайте также:  Windows extracting rar files

сохраните следующий код в тег .

без wget

надежная ping в отдельном скрипте bash:

поместите это в отдельный скрипт. Он справится разных ситуациях в сети как (1) не подключен к сети, (2) подключен к сети, но не может получить доступ к интернету (или, по крайней мере, Google), и (3) подключен к интернету.

вы можете позже использовать exit code скрипта для проверки подключения, например

Источник

Про 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.

Источник

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