Отправляет email-рассылки с помощью сервиса Sendsay

помогите в написании скриптика для mplayer

Доброго дня!

Запускаю с помощью mplayer интернет радио (Эхо Москвы). Сервер частенько
бывает переполнен и выдает ответ Error: ICY-Server is full, skipping!

Вот полный вывод:
bash-2.05b$ mplayer http://radio.echo.msk.ru:8000/
MPlayer 1.0pre5-3.2.3 (C) 2000-2004 MPlayer Team

CPU: Intel Pentium 4/Xeon/Celeron Foster 2789 MHz (Family: 8, Stepping: 9)
Detected cache-line size is 64 bytes
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Скомпилировано для x86 CPU со следующими расширениями: MMX MMX2 SSE SSE2

Reading config file /usr/local/etc/mplayer/mplayer.conf: No such file or
directory
Reading config file /home/ponyol/.mplayer/config
Reading /home/ponyol/.mplayer/codecs.conf: Can't open
'/home/ponyol/.mplayer/codecs.conf': No such file or directory
Reading /usr/local/etc/mplayer/codecs.conf: Can't open
'/usr/local/etc/mplayer/codecs.conf': No such file or directory
Используется встроенный codecs.conf.
font: can't open file: /home/ponyol/.mplayer/font/font.desc
Can't load font bitmap: arpi_osd_a.raw
Linux RTC init error in ioctl (rtc_irqp_set 1024): Permission denied
Try adding "echo 1024 > /proc/sys/dev/rtc/max-user-freq" to your system
startup scripts.
Using usleep() timing
Can't open input config file /home/ponyol/.mplayer/input.conf: No such
file or directory
Can't open input config file /usr/local/etc/mplayer/input.conf: No such
file or directory
Falling back on default (hardcoded) input config

Проигрывание http://radio.echo.msk.ru:8000/.
Resolving radio.echo.msk.ru for AF_INET...
Connecting to server radio.echo.msk.ru[194.67.37.85]:8000 ...
Error: ICY-Server is full, skipping!
Не могу открыть URL: http://radio.echo.msk.ru:8000/


Выходим... (Конец файла)
Как написать скриптик, что бы он запускал mplayer в цикле, пока он не
соединится. Собственно у меня проблема отловить в скрипте строку Error:
ICY-Server is full, skipping!.

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 11:51:06 +0200 (#339551)

 

Ответы:

а Вы попробуйте посмотреть значение переменной $? после запуска mplayer
- там обычно хранится статус выполнения последней запускаемой команды.

Ответить   Fri, 25 Mar 2005 14:12:48 +0300 (#339610)

 

Kolotov Alexandr пишет:

Не выходит :). Она содержит PID баша в котором выполняется mplayer.

26652 pts/4 00:00:00 bash

26652

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 14:04:46 +0200 (#339638)

 

я говорил не про $$, а про $? ...

Ответить   Fri, 25 Mar 2005 16:00:40 +0300 (#339669)

 

Kolotov Alexandr пишет:

Тогда скажи мне, как посмотреть переменную $? Мне кажется, что бы
увидить значение переменной, надо перед ней поставить знак $. Вот и
получается echo $$.

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 16:37:05 +0200 (#339722)

 

Oleg Ponomarev wrote:

Не, ты смотришь значение переменной `?'.
Посему $?

res=$?
echo $res

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 17191; Возраст листа: 609; Участников: 1352
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/339730

Ответить   Fri, 25 Mar 2005 16:55:26 +0200 (#339730)

 

i386-redhat-linux-gnu)

On Fri, 25 Mar 2005 11:51:06 +0200
Oleg Ponomarev <pony***@t*****.ua> wrote:

while [ "`mplayer http://radio.echo.msk.ru:8000/|sed -ne '/Error: ICY-Server
is full, skipping!/p'`" != "" ]
do sleep 10 # чтоб не мучать radio.echo.msk.ru :)
done

Ответить   Fri, 25 Mar 2005 14:20:43 +0200 (#339643)

 

i386-redhat-linux-gnu)

On Fri, 25 Mar 2005 11:51:06 +0200
Oleg Ponomarev <pony***@t*****.ua> wrote:

вдогонку (а то первый вариант, скорее всего, не заработает)

while [ "`mplayer -really-quiet http://radio.echo.msk.ru:8000/ 2>&1 |sed -ne
'/Error: ICY-Server is full, skipping!/p'`" != "" ]
do sleep 10 # чтоб не мучать radio.echo.msk.ru :)
done

Ответить   Fri, 25 Mar 2005 14:23:51 +0200 (#339646)

 

i386-redhat-linux-gnu)

On Fri, 25 Mar 2005 14:23:51 +0200
alexander barakin <arizona20***@m*****.ru> wrote:

-ne

все-таки -really-quiet надо убрать :)

Ответить   Fri, 25 Mar 2005 15:37:54 +0200 (#339688)

 

alexander barakin пишет:

Заработал второй вариант без -really-quiet, спасибо.

Но, в тоже время, есть две непонятки:
1. в связи с 2>&1, после успешного подключения, весь вывод mplayer-а
естественно пропал и видимо это не исправить :(.
2. А вот этого я не понял:

8353 pts/4 00:00:00 m
8749 pts/4 00:00:00 m
8750 pts/4 00:00:03 mplayer
8751 pts/4 00:00:00 sed
8753 pts/4 00:00:00 mplayer

m - это скрипт. После успешного соединения с сервером появился второй
процесс m и mplayer. Это почему и зачем?

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 16:56:37 +0200 (#339731)

 

i386-redhat-linux-gnu)

On Fri, 25 Mar 2005 16:56:37 +0200
Oleg Ponomarev <pony***@t*****.ua> wrote:

можно дополнить

чтобы писать вывод в файл

судя по большой разнице в pid'ах,
может это какой-то неубитый процесс? речь о первом m

а что выдает
$ ps -ax

у себя подобной картины не наблюдаю.
правда, успешно соединиться с сервером так и не вышло :)

Ответить   Fri, 25 Mar 2005 20:18:10 +0200 (#339861)

 

alexander barakin пишет:

попробую

перед запуском все было чисто.

12046 pts/4 S 0:00 /bin/sh ./m
12327 pts/4 S 0:00 /bin/sh ./m
12328 pts/4 S 2:03 mplayer http://radio.echo.msk.ru:8000/
12329 pts/4 S 0:01 sed -ne /Error: ICY-Server is full, skipping!/p
12331 pts/4 S 0:05 mplayer http://radio.echo.msk.ru:8000/

это потому что тебе не удалось соединиться с сервером. Это происходит
только после соединения, а пока он пробивается к нему, то процес один.

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 20:41:43 +0200 (#339868)

 

Oleg Ponomarev пишет:

В дополнение. Странно, но второе ./m появляется во время попытки
соединения (я сразу не обратил внимания).

13308 pts/4 S 0:00 /bin/sh ./m
13345 pts/4 S 0:00 /bin/sh ./m
13346 pts/4 S 0:00 mplayer http://radio.echo.msk.ru:8000/
13347 pts/4 S 0:00 sed -ne /Error: ICY-Server is full, skipping!/p

13308 pts/4 S 0:00 /bin/sh ./m
13370 pts/4 S 0:00 /bin/sh ./m
13371 pts/4 S 0:00 mplayer http://radio.echo.msk.ru:8000/
13372 pts/4 S 0:00 sed -ne /Error: ICY-Server is full, skipping!/p

а при sleep его нет. Поэтому у них и PID так различаются. Зачем он себя
дублирует?

Ответить   Oleg Ponomarev Fri, 25 Mar 2005 20:56:27 +0200 (#339881)

 

В сообщении от 1111776987 секунд после начала Эпохи Unix Вы написали:

Там shell, который выполняет команды:

mplayer http://radio.echo.msk.ru:8000/ 2>&1 |sed -ne '/Error: ICY-Server is
full, skipping!/p'

Все-таки лучше написать так:

while ! mplayer http://radio.echo.msk.ru:8000/; do sleep 10; done

Ответить   Konstantin Korikov Sat, 26 Mar 2005 04:02:05 +0200 (#339997)

 

Konstantin Korikov пишет:

Так картина немного изменилась:

16641 pts/4 S 0:00 /bin/sh ./m
16642 pts/4 S 0:00 mplayer http://radio.echo.msk.ru:8000/
16644 pts/4 S 0:00 mplayer http://radio.echo.msk.ru:8000/

mplayer-а все равно два :(. Вот окончательный скрипт:

while [ ! `mplayer http://radio.echo.msk.ru:8000/`; ]
do
sleep 10
done

Ответить   Oleg Ponomarev Sat, 26 Mar 2005 08:20:26 +0200 (#340038)

 

В сообщении от 1111818026 секунд после начала Эпохи Unix Вы написали:

Да, это не пройдет, так как mplayer всегда возвращает нулевой статус...

mplayer расщепляется на два процесса, это нормально. Запустите его
просто из командной строки и посмотрите.

Что то я не совсем понял эту конструкцию... Она у Вас работает?

$ while [ ! `mplayer http://radio.echo.msk.ru:8000/`; ]; do sleep 10; done
Can't open '/home/lostclus/.mplayer/codecs.conf': No such file or directory
Cannot load font: /usr/share/mplayer/font/font.desc
Can't open input config file /home/lostclus/.mplayer/input.conf: No such file
or directory
Couldn't resolve name for AF_INET6: radio.echo.msk.ru
Couldn't resolve name for AF_INET: radio.echo.msk.ru
Unable to open URL: http://radio.echo.msk.ru:8000/
bash: [: missing `]'
bash: ]: command not found

Ответить   Konstantin Korikov Sat, 26 Mar 2005 12:27:57 +0200 (#340226)

 

Konstantin Korikov пишет:

посмотрю

да, работает :). только не спрашивать почему.

Ответить   Oleg Ponomarev Sat, 26 Mar 2005 20:58:52 +0200 (#340329)