Скрипт ping ресурса, и запуск следующей команды (ping. awk, и другое.)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Скрипт ping ресурса, и запуск следующей команды

Сообщение Voler »

Добрый день.

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

Код: Выделить всё

#!/bin/sh

while true; do
  if ! ping -c 4 -q ya.ru >> /root/ping.log ; then

    ping -c 4 -q 85.26.152.164 >> /root/ping.log ;
  fi
  sleep 15s
done &


если делаю вот такую конструкцию,

Код: Выделить всё

if ping -c 4 -q ya.ru | head -c 30 | awk '{print $3}' &&  echo Интернет есть `date +"%b %d %T"` || echo Нет Интернета `date +"%b %d %T"`; then ping -c 4 85.26.152.164; fi

то не отрабатывает условие пускать пинг на второй адрес, при отсутствии ответа от первого.
Дайте совет, как исправить?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: Скрипт ping ресурса, и запуск следующей команды

Сообщение /dev/random »

Voler писал(а):
05.06.2011 12:37
Дайте совет, как исправить?

Звонить провайдеру.

А вообще:
Voler писал(а):
05.06.2011 12:37
если делаю вот такую конструкцию,

Код: Выделить всё

if ping -c 4 -q ya.ru | head -c 30 | awk '{print $3}' &&  echo Интернет есть `date +"%b %d %T"` || echo Нет Интернета `date +"%b %d %T"`; then ping -c 4 85.26.152.164; fi

... то условие будет выполняться всегда. Во-первых, в пайпе код возвращает не первая команда, а последняя, и авк тут отработает всегда успешно. Во-вторых, у вас в условии стоит "|| всегда_успешная_команда". В-третьих, вы пытаетесь второй пинг выполнять в случае успеха, что противоречит условию задачи.
Правильнее так:
if ping -c 4 -q ya.ru | head -c 30 | awk '{print $3}' | grep . ; then echo Интернет есть `date +"%b %d %T"`; else echo Нет Интернета `date +"%b %d %T"`; ping -c 4 85.26.152.164; fi
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скрипт ping ресурса, и запуск следующей команды

Сообщение SLEDopit »

Voler писал(а):
05.06.2011 12:37
пропадает интернет, и начинает работать после запуска пинга на определенное оборудование прова.
А нельзя просто:

Код: Выделить всё

#!/bin/sh
while true; do ping -c 1 -q 85.26.152.164; sleep 30; done &
?
Или тут принцпиально пинговать, только если инет отвалился?
И да, обратитесь к провайдеру. Хотя, впрочем это мобильный инет от мегафона, насколько я понимаю. Вряд ли они чем помогут (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Re: Скрипт ping ресурса, и запуск следующей команды

Сообщение Voler »

Если пустить пинг на 85.26.152.164 это не помогает, пробовали.
Именно когда пропал инет.
Спасибо сказали: