检查GMediaRenderer的状态

时间:2016-02-09 10:35:38

标签: bash upnp

我使用GMediaRenderer通过覆盆子Pi的UPNP发送音频。偶尔,由于未知原因,我必须通过SSH连接到我的Pi并发送命令sudo service gmediarenderer restart以使其正常工作。我想向crontab或类似的用户添加命令,定期检查服务是否正在正确运行。我已经有一个crontab条目,用于检查服务是否正在运行,如果不是,则启动。我遇到的麻烦是,有时,即使服务正在运行,它似乎也没有与UPNP控制点通信。执行restart命令会将其恢复,因此我假设服务已崩溃但未关闭。

有没有人知道如何以编程方式检查(最好使用bash脚本)GMediaRenderer服务是否启动并运行?

1 个答案:

答案 0 :(得分: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
相关问题