모션에서 Python 스크립트를 실행하는 중에 문제가 발생했습니다.

모션에서 Python 스크립트를 실행하는 중에 문제가 발생했습니다.

동영상을 Google 드라이브에 업로드하기 위해 CCTV를 동작 감지로 라즈베리 파이에 웹캠을 설정하려고 합니다.제레미 브라이스의 각본

모션이 제대로 작동하고 터미널에서 테스트하면 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

간단한 해결책이 있지만 누군가 그것이 어떻게 작동하는지 설명해야 합니다. 캠페인을 루트로 시작하십시오. /etc/rc.local에 'sudomotion'reboot 줄을 추가하면 대부분의 이벤트는 루트, on_event_end sudo... 명령 또는 스크립트로 시작하면 작동합니다.

관련 정보