Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Ping со звуком  (Прочитано 5074 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн LKharlamov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Ping со звуком
« : 12 Февраля 2009, 11:16:29 »
Доброго времени суток!

   Для Windowsа есть програмка, fping называется, у неё есть ключ:
Цитировать
-b : beep on every successful reply (- to beep on timeout)
   Таким образом набирая команду к примеру: fping vpn.chelcom.ru -b- , при потеряных пакетах будет выдаваться в динамик звуковой сигнал.

   В стандартной команде от Linuxа ping, есть ключ:
Цитировать
-a     Audible ping.
   Но он сигнализирует в динамик когда пакет проходит, а нужно именно наоборот - когда теряется.

   Есть идеи как это можно реализовать при минимуме усилий?

Оффлайн LKharlamov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Ping со звуком
« Ответ #1 : 12 Февраля 2009, 22:12:24 »
UP :)

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Re: Ping со звуком
« Ответ #2 : 13 Февраля 2009, 00:19:06 »
я в скриптонаписании не мастер=)
Вот что-то накорябал, должно работать =)
#!/bin/sh

while [ 1 ]; do

ping -q -c 1 $1 > /dev/null

if [ $? = 0 ]; then
  echo "OK"
else
  echo -en "\007"
fi

sleep 1

done

Если скрипт называется, допустим, beepping.sh, то запускать как-то так:
beepping.sh 192.168.1.1
Выход по многочисленному (у меня=) нажатию Ctrl+C

P.S. Кстати, не разобрался, как организовать выход из цикла по нажатию одной клавиши. Может, кто из гуру подскажет?
« Последнее редактирование: 13 Февраля 2009, 00:21:36 от Saha »

Оффлайн LKharlamov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Ping со звуком
« Ответ #3 : 13 Февраля 2009, 14:25:25 »
Saha, спасибо за скприпт

Вместо echo -en "\007", написал /usr/bin/beep - чтобы через pc-спикер звучало.
Тока вот когда хост не пингуется, то задержка между звуковыми сигналами длинная получается, думаю это от того что команда ping -q -c 1 $1 долго отрабатывает, дожидаясь icmp ответа.
Есть идеи как оптимизировать можно?

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Re: Ping со звуком
« Ответ #4 : 13 Февраля 2009, 18:08:37 »
оптимизировать легко, думал, сам найдешь=)
Надо писать так ping -c 1 -W 1 <ip>
Опция -W 1 устанавливает максимальное время ожидания в 1 секунду (как-то так;-)
С учетом sleep 1, пауза между гудками в 2 секунды, вполне достаточно, я думаю  :coolsmiley:

Оффлайн LKharlamov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Ping со звуком
« Ответ #5 : 13 Февраля 2009, 19:46:13 »
Ещо один банальный вопрос, как добавить условие чтобы пики начинались после скажем 3-его подряд потеряного пакета.

#!/bin/sh
i=0
while [ 1 ]; do

ping -q -c 1 -W 1 $1 > /dev/null

if [ $? = 0 ]; then
  i=0
  echo "OK"
else
  i++
  if (i>=3) then /usr/bin/beep
fi

sleep 1

done

В переводе на шелл как правильно будет? :)

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Re: Ping со звуком
« Ответ #6 : 13 Февраля 2009, 23:14:55 »
Вообще-то я тоже с bash'ем не особо знаком, поэтому google - наше всё!  :D
вот как-то так:
i=0

while [ 1 ]; do

  ping -q -c 1 -W 1 $1 > /dev/null

  if [ $? -ne 0 ]; then
    i=$((i+1))
    if [ $i -gt 2 ]; then
      /usr/bin/beep
    fi
  fi

  sleep 1

done

 

Страница сгенерирована за 0.014 секунд. Запросов: 19.