juancarj199
Posts: 6
Joined: Sun May 15, 2016 9:19 am

[SOLUCIONADO]ejecutar script en python al encender raspberry

Sun May 15, 2016 9:26 am

Buenas a todos, mi problema es el siguiente, he programado un bot para telegram en python y lo ejecuto en la raspberry pi para que esta actue como servidor de todo el bot, lo que necesito es ejecutar ese script cada vez que enciendo la raspberry de forma automática, he probado diversos métodos pero no consigo lograrlo así que si alguien tiene una solución estaría muy agradecido, el s.o es raspbian y el programa pues es simplemente bot.py y para ejecutarlo pues por terminal "python bot.py" gracias :D :D
Last edited by juancarj199 on Wed May 18, 2016 10:55 am, edited 1 time in total.

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: ejecutar script en python al encender raspberry

Sun May 15, 2016 3:12 pm

¿Qué métodos has probado? para poder descartarlos o comentarlos.

Para mi el mejor, por su simpleza, es usar el archivo "/etc/rc.local". Creo que con poner algo así bastaría:

Code: Select all

setsid /usr/bin/python /home/usuario/bot.py &
Ni que decir tiene que las rutas hacia el intérprete y el script están aquí de ejemplo, hay que poner los correctos. Lo de "setsid" es para que al terminar la ejecución de "rc.local" no se lleve también el script en Python por delante y lo finalice. No estoy del todo seguro que sea imprescindible, pero ponerlo tampoco debería tener efectos negativos. El simbolo "&" es para que el script de "rc.local" siga su ejecución, de lo contrario se quedaría esperando a que el script en Python terminara para poder seguir (en realidad creo que de esto también lo hace "setsid", pero una vez más lo ponemos para asegurar el tiro y porque tampoco parece tener efectos secundarios).

juancarj199
Posts: 6
Joined: Sun May 15, 2016 9:19 am

Re: ejecutar script en python al encender raspberry

Mon May 16, 2016 9:37 am

sigo sin hacerlo funcionar, el caso es que la orden si la ejecuto desde terminal funciona pero no se inicia el servidor al encenderse la placa, "setsid /usr/bin/python2.7 /home/pi/Desktop/bot.py &" esta es la orden que ejecuto, creo que esta bien porque funciona si la escribo yo directamente pero sigo sin encontrar una solución para que lo haga de forma autónoma

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: ejecutar script en python al encender raspberry

Mon May 16, 2016 11:57 am

Uhmmm... ¿no será que el script se inicia pero falla inmediatamente? debido a que el sistema no está del todo cargado. Por ejemplo, falta todavía la conectividad de red y por eso se cierra el script prematuramente. Así se entendería que te funcionase al escribirlo a mano, ya que el sistema estaría totalmente cargado.

Como prueba pon antes un retardo generoso de, no sé... ¿unos 60 segundos?. Algo así:

Code: Select all

sleep 60
setsid /usr/bin/python2.7 /home/pi/Desktop/bot.py &
Yo inicio un script en Bash de esta forma y me funciona (sin necesidad del retardo o comprobaciones adicionales de conectividad, sistemas de archivos externos... etc, porque no lo necesito, en caso contrario lo haría). Si sigue sin funcionar simplifica al máximo el script, a ver si así al menos funciona y puedes ir aumentando la complejidad hasta dar con lo que te lo hace fallar.

jesus.vallejo
Posts: 103
Joined: Tue Dec 03, 2013 4:30 pm

Re: ejecutar script en python al encender raspberry

Mon May 16, 2016 2:35 pm

yo usaría cron , y pondria esto.

Code: Select all

@reboot
python  /storage/scripts/"script a ejecutar"
recuerda poner su ruta

User avatar
AikonCWD
Posts: 180
Joined: Mon Jun 09, 2014 3:50 pm
Location: Barcelona

Re: ejecutar script en python al encender raspberry

Tue May 17, 2016 7:06 am

Tienes varias formas, prueba a editar el fichero ~/.bashrc y añade tu script al final.
My e-mail = aikon.bcn@gmail.com

juancarj199
Posts: 6
Joined: Sun May 15, 2016 9:19 am

Re: [SOLUCIONADO]ejecutar script en python al encender raspb

Wed May 18, 2016 10:57 am

era justo lo que decías 56kbps, el script no se iniciaba porque la conexíon a internet aun no estaba funcionando, en cuanto he puesto el sleep 60 funciona perfectamente, muchas gracias por la ayuda :D :D

56kbps
Posts: 118
Joined: Wed Apr 13, 2016 6:22 am

Re: [SOLUCIONADO]ejecutar script en python al encender raspb

Wed May 18, 2016 11:54 am

Fantástico, me alegro que lo hayas podido solucionar. :)

Sólo una sugerencia: no se que harás al final, lo de los 60 segundos era un apaño para ver "si sonaba la flauta". Tal vez un retoque del código Python o unas líneas de código extras (a modo de comprobación y tal) en "rc.local" sea una solución más correcta.

jarriztg
Posts: 1
Joined: Fri Nov 18, 2016 6:11 am

Re: [SOLUCIONADO]ejecutar script en python al encender raspb

Fri Nov 18, 2016 6:21 am

Pff las maneras que dicen no son convenientes :// gastan más memoria

Haz esto mejor y deja de usar ese metodo:

Crea un script en la carpeta del bot llamado:
tmux.sh

E ingresas esto:

Code: Select all

#!/bin/bash
tmux new-session -s "botpy" -d "python bot.py"

Editas /etc/rc.local e ingresas en la última linea:

Code: Select all

bash Y_AQUI_LA_CARPETA/tmux.sh
cada vez que reinicies te creará un proceso de tmux que seguro te evitará muchos errores... busca más usos de tmux, se puede usar attach para devolver a la sesion o kill para matarla

User avatar
hiddenotebook
Posts: 68
Joined: Fri Oct 02, 2015 7:52 pm
Contact: Website

Re: [SOLUCIONADO]ejecutar script en python al encender raspb

Sat Nov 19, 2016 5:19 pm

Al final de este POST esta la manera que uso para iniciar un script en mi PI por si sirve de algo.

Return to “Español”