Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Голосовое уведомление о наличии сети 
:(
    Опции темы
BlackRu
Дата 19.7.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



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

#!/bin/bash
sett ()
{
ip="ya.ru"
count=3
result=$(ping -c ${count} ${ip} | tail -2 | head -1 | awk '{print $4}')
if [ "$result" = "3" ]; then
echo "Network is work" | festival --tts 
setdam
else
echo "Network is down" | festival --tts
noset
fi
}

noset1 ()
{
ip="ya.ru"
count=3
result=$(ping -c ${count} ${ip} | tail -2 | head -1 | awk '{print $4}')
if [ "$result" != "3" ]; then
echo "Нету сети"
sleep 10
noset
else
sett
fi
}

noset ()
{
while true;
do
 echo "Цикл проверки сети Off";
 noset1
 sleep 10;
done;
exit;
}


sett1 ()
{
ip="ya.ru"
count=3
result=$(ping -c ${count} ${ip} | tail -2 | head -1 | awk '{print $4}')
if [ "$result" = "3" ]; then
echo "Есть сеть"
sleep 10
setdam
else
sett
fi
}

setdam ()
{

while true;
do
 sett1
 sleep 10;
done;
exit;
}
sett


 
Может, кому-то пригодится, или кто-то предложит лучший вариант. 

Это сообщение отредактировал(а) BlackRu - 19.7.2010, 15:55


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
djamshud
Дата 19.7.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



Не люблю вечный пинг. И яндекс его тоже не любит, думаю. (если конечно я правильно понял, что те функции без внятных имен раз в десять секунд посылают по три пинга).

Тоже решил вспомнить баш, и вот что получилось:

Код

#!/bin/bash

domain=ya.ru
iface=eth0

# 0 is online
# fuck! host uses cache :(. ok, ping... so you can ping DNS server or read man of `host` :)
isonline(){
ping -c 1 ${domain} > /dev/null 2>&1
#host ${domain} >/dev/null 2>&1
echo $?;}

# 0 is down
isifaceup(){
res=$(ifconfig ${iface} | grep -c UP)
test $? -ne 0 && echo 0 || echo ${res};}

waitifacestatuschanged(){
prev=$(isifaceup)
while test ${prev} -eq $(isifaceup); do
sleep 1;
done;}

# here you can play music, write logs, etc.
msg(){
case $1 in
ifup)   echo "${iface} is up and running";;
ifdown) echo "${iface} is down";;
online) echo "I'm online! Hello yandex, hello google and hello a lot of fun!";;
esac;}

print(){
if [ $(isifaceup) -eq 1 ]; then
if [ $(isonline) -eq 0 ]; then msg online; else msg ifup; fi
else msg ifdown
fi;}


print
while true; do
waitifacestatuschanged
print
done


Недостаток - не задетектит "пивисшее" соединение например на GPRS. С другой стороны, насколько я помню, частые пинги как раз и приводили к повисанию моего МТС-овского GRPS.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
BlackRu
Дата 19.7.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



Цитата(djamshud @  19.7.2010,  17:24 Найти цитируемый пост)
... И яндекс его тоже не любит, думаю. (если конечно я правильно понял, что те функции без внятных имен раз в десять секунд посылают по три пинга).

Да, именно так.

Вникну сегодня в ваш скрипт, спасибо. 



--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1202 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.