2016-02-09 4 views
1

Я использую GMediaRenderer для отправки звука через UPNP из малины Pi. Иногда, по неизвестным причинам, я должен использовать SSH в своем Pi и отправить команду sudo service gmediarenderer restart, чтобы заставить ее работать правильно. Я хотел бы добавить команду в crontab или подобное, что периодически проверяет, работает ли служба . У меня уже есть запись crontab, которая проверяет, работает ли служба, и запускается, если это не так. Проблема, с которой я сталкиваюсь, заключается в том, что иногда, хотя служба работает, она, похоже, не взаимодействует с контрольными точками UPNP. Выполнение команды restart возвращает ее, поэтому я предполагаю, что это просто случай, когда служба потерпела крах, но не закрылась.Проверить статус GMediaRenderer

Кто-нибудь знает, как программно проверить (желательно с использованием сценария bash), работает ли служба GMediaRenderer?

ответ

0

Я нашел решение этого вопроса. Команда gssdp-discover возвращает список активных рендерингов. Я устанавливаю задание sudo crontab для запуска скрипта bash каждую минуту, которая проверяет, работает ли какой-либо конкретный рендерер, и перезапустить gmediarenderer, если он не найден.

Следующая команда выведет список ваших активных рендеры:

gssdp-discover -i wlan0 --timeout=3 

Изменение wlan0 выше в зависимости от конкретной сети. В моем случае рендеринг, который меня интересует, указан как urn:av-openhome-org:service:Info:1 (запустите команду с активным средством рендеринга и без него, и найдите тот, который появляется только при запуске). Итак, мой сценарий bash содержит:

gssdp-discover -i wlan0 --timeout=3 --target=urn:av-openhome-org:service:Info:1 | grep available &> /dev/null 
if [ $? == 0 ]; then 
    echo "OpenHome renderer is already running" 
else 
    echo "restarting gmediarenderer" 
    /etc/init.d/gmediarenderer stop 
    /etc/init.d/gmediarenderer start 
fi 
Смежные вопросы