从motion运行python脚本时出现问题

从motion运行python脚本时出现问题

我正在尝试将我的网络摄像头设置为树莓派作为运动检测闭路电视,将视频上传到谷歌驱动器杰里米·布莱斯的剧本

我的运动工作正常,并且当我从终端测试它时,Python 脚本会运行。

但是,当我将脚本添加到 motion.conf 中的 on_movie_end 选项时,脚本并没有运行。

我在文件中使用的脚本是

On_Movie_End /etc/motion/uploader.py /etc/motion/uploader.cfg %f

我还尝试让 on_movie_end 运行一个运行 python 脚本的 bash 脚本,但这也不起作用。我是 Linux 新手,所以不完全确定我是否正确。

脚本是:

#!/bin/bash
VIDEO=$1 
/etc/motion/uploader.py /etc/motion/uploader.cfg VIDEO

在motion.conf /etc/motion/uploaderscript.sh %f 中

答案1

检查以下几点:

  1. 我看到的所有示例都使用on_movie_end而不是On_Movie_End.所以先尝试使用小写版本。

  2. 检查两个脚本是否有执行权限。如果没有添加:

    sudo chmod +x /etc/motion/uploader.py
    sudo chmod +x /etc/motion/uploaderscript.sh
    
  3. 将 python 脚本的 stderr 重定向到文件。这可以帮助捕获错误。编辑 .sh 文件以匹配此内容(注意$VIDEO:这是在 bash 中引用变量的正确方法):

    #!/bin/bash
    VIDEO=$1 
    /etc/motion/uploader.py /etc/motion/uploader.cfg $VIDEO &> /tmp/on_movie_end.log
    

答案2

我仍然无法弄清楚如何从运动中播放Python脚本。相反,我只是运行一个创建文本文件的 bash 脚本。启动时,我让实际的 python 脚本运行 while 循环,检查文本文件是否存在,一旦存在就会运行脚本的其余部分。

答案3

这个配置对我有用:

on_movie_end /usr/bin/python /home/myuser/Scripts/MyScript.py

当然,脚本必须具有正确的权限才能由运动进程执行。有关配置的更多详细信息可以在 Motion 文档中找到:

https://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptions

答案4

我有一个简单的解决方案,但需要有人解释它是如何工作的。以 root 身份启动运动。在 /etc/rc.local 'sudomotion'reboot 中添加一行,如果以 root、on_event_end sudo ...命令或脚本启动,大多数事件都会起作用。

相关内容