Проверка доступности интернет-сервиса

У меня есть будильник, который при наличие инета запускает инет-радио, иначе локальный плейлист. Вот этот кусок:

if [ `ping -c 1 ya.ru | head -n 5 | tail -n 1 | awk '{print $4}'` -eq 1 ]
    then mpc load alarm_online
    else mpc load alarm_offline
fi

мне не нравится, как выглядит проверка инета, хочется чего-то более лаконичного и надежного. Что можете предложить? И еще, думаю ya.ru заменить на адрес из alarm_online, в нем просто содержатся один или несколько адресов радио по строчкам.

.

ping -q -c 1 ya.ru > /dev/null 2>&1
if [ $? -eq 0 ]; then
...
fi

Не грусти, товарищ! Всё хорошо, beautiful good!

Не обязательно именно так

На трёх буквах много полезных примеров.

:wq
--
Live free or die

Да, НО...

Anarchist написал(а):
На трёх буквах много полезных примеров.

...человек ведь конкретики попросил... Неужто для решения такой простой задачи, ему следует стать профессиональным программером?!

З.Ы.: сорь за офтоп...

... о, спасибо, очень

... о, спасибо, очень полезный посыл на три буквы, нашёл там вот это 27-4. On-line connect , может поможет ...

/

SoiFong написал(а):
хочется чего-то более лаконичного и надежного. Что можете предложить?

Может всё же эффективного?

Хочу обратить внимание на тот факт, что для нормально функционирующих ресурсов Сети открытые извне пинги (протокол ICMP) --- скорее исключение, чем правило. Потому пинги я бы не назвал надёжным способом.

Лично я к радио отношусь крайне неодобрительно, потому относительно функционирования "инет-радио" совершенно не в курсе.
По идее должен использоваться протокол TCP...
Если не проверять отдельно ресолвинг имён (работоспособность DNS) и на данном доменном имени живёт не только радио, но и какой-никакой сайт, то я бы сказал, что здесь можно будет попытаться стянуть wget'ом (или что больше по вкусу) индексную страницу этого сайта (что, впрочем и строго говоря, не гарантирует работоспособности сервиса радиовещания).
Правильным же я бы наверное скорее назвал сначала попытку запуска будильника на радио, и в случае ошибок переключение на локальную коллекцию.

ЗЫ: Хороший сон и/или тихий системник :)))

:wq
--
Live free or die

У тебя поразительное свойство

У тебя поразительное свойство делать проблему из ничего. ICMP, если что, делался именно для того, чтобы диагностировать сетевые службы.

Не грусти, товарищ! Всё хорошо, beautiful good!

Я, что бы проверить есть ли

Я, что бы проверить есть ли подключение к инету проверяю поднят ли интерфейс ppp, что выполняется быстрее чем пинг

ifconfig | grep ppp
if [ $? = '0' ]; then
...
fi

Лаконичнее не получилось.

Лаконичнее не получилось. Решил проверять доступность сервера телнетом, потому что на одном адресе может быть несколько станций на разных портах

address=`grep -oP '(?<=http://)[\w.-]*:\d*' sounds/alarm_online.m3u | head -1 | sed 's/:/ /'`
if echo q | telnet -e q $address | grep -oq Connected &> /dev/null
    then mpc load alarm_online
    else mpc load alarm_offline
fi

Кому интересно, весь скрипт выглядит так:

#!/bin/bash

maxvolume=100 # %
raisetime=60 # сек

volume=0
setmixer -V vol $volume
mpc clear

address=`grep -oP '(?<=http://)[\w.-]*:\d*' sounds/alarm_online.m3u | head -1 | sed 's/:/ /'`
if echo q | telnet -e q $address | grep -oq Connected &> /dev/null
    then mpc load alarm_online
    else mpc load alarm_offline
fi

mpc play

while [ "$volume" -le "$maxvolume" ]
do
    let volume++
    setmixer -V vol $volume
    sleep `echo "scale=3; $raisetime / $maxvolume" | bc`
done

потом он пихается в какой-нибудь планировщик. Для удобства, в кедах я использовал kalarm, в xfce - orage
тему переименовал правильнее

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".