PROBLEMA Problema Motion In Background

Pubblicità

joker320t

Nuovo Utente
Messaggi
73
Reazioni
1
Punteggio
27
Ciao a tutti ragazzi, ho un problema che per ora e' insormontabile, allora ho installato motion sul mio raspy e con un bot telgram scritto in python invio il comando ps.system("sudo motion") per attivarlo, qui arriva il problema se lancio il programma python del bot normalmente da terminale tutto funziona, ma se invece imposto un crontab e lancio il programma python all'avvio del pc il programma funziona ma non funziona motion. Mi spiego meglio ho provato a vedere con ps aux se il programma motion fosse attivo quando inviato il comando di accensione e effettivamente risultava ma non riesco ne a vedere lo streaming video della telecamera ne mi invia i comandi che mi dovrebbe inviare motion alla rilevazione dei movimenti. Non so più cosa fare sono disperato

Sent from my SM-G935F using Tapatalk
 
Si può vedere lo script python? Ti consiglierei di fare un po' di debug statements nello script, oppure ancora di dirigere standard output e standard error su file, in modo da leggerlo comodamente
 
La cosa che non mi torna e che se avvio il programma da terminale con sudo python bot.py tutto funziona come dovrebbe
Ma se invece lo faccio partire con crontab il processo e' attivo ma non rileva nulla in questo momento non sono a casa quindi non riesco ad inviarti lo script però la cosa mi sta facendo impazzire

Sent from my SM-G935F using Tapatalk
 
Dimenticavo, sul file config di motion ho messo on_event_start mi manda un messaggio su telgram con scritto movimento rilevato
E poi on_movie_and esegue uno script.sh dove mi converte il video.avi in mp4 e lo invia per telgram ma tutto funziona solo se il bot lo eseguo da terminale

Sent from my SM-G935F using Tapatalk

- - - Updated - - -

elif command == 'attiva motion':
os.system("sudo motion")
bot.sendMessage(chat_id, "Motion attivo, se ci saranno dei movimenti ti inviero' subito un messaggio e il video")
elif command == 'disattiva motion':
os.system("sudo pkill motion")
bot.sendMessage(chat_id, "Motion e' stato disattivato, da questo momento in poi non saranno piu tracciati movimenti")

Questo e' il pezzettino di codice che mi tiiva e disattiva motion non riesco a copiarlo tutto sono 300 righe
 
Ok, il problema mi sembra chiaro: da python chiami dei comandi di sistema che richiedono permessi di sudo.

Probabilmente il metodo più sicuro è questo, richiede il setup del server ssh sul raspberry. In seconda scelta c'è questo metodo (modifichi /etc/sudoers.conf per avviare il tuo script con permessi di sudo, senza dover inserire password; o magari permetti i comandi motion e pkill senza inserire password). Infine si potrebbe indicare la password nello script o come variabile di ambiente al lancio dello script, pessime scelte per la sicurezza.
 
Ma poi killare un processo è il metodo sbagliato, devi fermare il servizio, non killarlo... fatti un servizio, non so che OS usi, se ha systemd, upstart etc... da abilitare e stoppare.
 
Però per quale motivo allora se eseguo il mio bot da terminale avvio motion da telgram e funziona tutto io non metto nessuna password, scusa se insisto ma voglio capire :D

Grazie Lele.deb provvederò allora a fare nella maniera corretta

Sent from my SM-G935F using Tapatalk

- - - Updated - - -

ciao Davide, allora o seguito la seconda guida che mi hai detto nella tua risposta, ma nulla non funziona. Ho provato a vedere con il comando ps aux | grep motion per vedere se fosse attivo e effettivamente e' attivo ma non funziona ne lo streaming ne il motion detect ma ora se lancio lo script che ho creato con il comando sudo da terminale non funziona comunque però se lancio il comando sudo motion da terminale funziona. mi correggo prontamente se lancio lo script con i permessi da terminale funziona perfettamente solo se lo lancio da python non va
 
Mostraci /etc/sudoers.conf

P.S: ha pienamente ragione lele.deb, volevo scriverlo anche io; in quel caso bisogna comunque smanettare con i permessi
 
Posto subito

Sent from my SM-G935F using Tapatalk

- - - Updated - - -

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"


# Host alias specification


# User alias specification


# Cmnd alias specification


# User privilege specification
root ALL=(ALL:ALL) ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL


# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
samuele ALL=(ALL) NOPASSWD: /home/samuele/my_domotic_home/attiva_motion.sh


# See sudoers(5) for more information on "#include" directives:


#includedir /etc/sudoers.d
 
Uhm, prova a fare

Codice:
[COLOR=#333333]samuele ALL=(ALL) NOPASSWD: /percorso/a/pkill, /percorso/a/motion [/COLOR]

ragionando adesso ovviamente prima non funzionava...poco caffè stamattina :asd:

/percorso/a/ deve essere ovviamente sostituito con il percorso vero, che puoi trovare tramite

Codice:
which pkill
which motion
 
da_script_python.webpda_terminale.webp

- - - Updated - - -

ciao allora nulla da fare, non funziona neanche così, ma ho fatto una prova con il comando "ps aux | grep motion". Quando lancio il comando da script python il processo risulta attivo ma non corrisponde a quando lo lancio da terminale. Invio anche due screenshot per far vedere. Comunque voglio precisare che se il programma python lo lancio da terminale funziona tutto, il problema c'e' quando lo script funziona con crontab
 
Ultima modifica:
Cioè? Uso crontab perchè cosí all'avvio del raspy mi si avvia anche il bot senza doverlo avviare da terminale ogni volta, o soltanto se salta la luce o ri riavvia il raspy riparte da solo?! Sto sbagliando qualcosa? Non saprei come altro fare, perhcè leggevo ora che con crontab ci potrebbero essere dei problemi
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top