我正在尝试将我的网络摄像头设置为树莓派作为运动检测闭路电视,将视频上传到谷歌驱动器杰里米·布莱斯的剧本
我的运动工作正常,并且当我从终端测试它时,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
检查以下几点:
我看到的所有示例都使用
on_movie_end
而不是On_Movie_End
.所以先尝试使用小写版本。检查两个脚本是否有执行权限。如果没有添加:
sudo chmod +x /etc/motion/uploader.py sudo chmod +x /etc/motion/uploaderscript.sh
将 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 ...命令或脚本启动,大多数事件都会起作用。