Ejecutar un programa de inicio en la terminal con sudo

8

Necesito ejecutar un script de Python en una terminal, myscript.py al inicio (en Lubunt). Este script requiere root.

He configurado un .desktoparchivo que ejecuta el siguiente comando:

lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"

La ventana de terminal se abre al inicio y ejecuta el script, pero luego se cierra cuando el script de Python devuelve un error (porque no se ejecuta como root). Cuando cambio el Exec=a esto ...

lxterminal --command="sudo python /home/d/Jarvis/alarm.py && /bin/bash"

... (comando de prefijo con sudo) que funciona. Sin embargo , el terminal se abre al inicio y muestra el

[sudo] password for d: \

pronta, requiriéndome ingresar mi contraseña. Me gustaría que la ejecución del script python en el inicio sea completamente automática sin interacción del usuario.

¿Cómo puedo lograr esto?

Brandon
fuente

Respuestas:

5

Si lo desea al iniciar sesión y no al inicio (ya que no veo cómo se puede abrir LXTerminal sin que el servidor X esté activo), debe agregar una excepción al archivo / etc / sudoers para que no se le solicite tu contraseña.

Para hacer esto, ejecute sudo visudoy luego agregue lo siguiente:

<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py

Asegúrese de agregar esto al final del archivo para que esto funcione. También establecería los permisos de alarm.pyejecutable para que esto funcione. Entonces, haga esto para configurarlo como ejecutable:

chmod +x /home/d/Jarvis/alarm.py

¡Espero eso ayude!

kroq-gar78
fuente
¡Esto funciona! Muchas gracias! Todavía tengo un problema ... Cuando ejecuto "alarm.py" en lugar de "python alarm.py", obtengo errores 'import: not found' para los módulos centrales de python (por ejemplo, datetime). No creo que pueda copiar esos módulos en / Jarvis /, entonces, ¿qué debo hacer?
Brandon
@ Brandon Puede que tenga que configurar la PYTHONPATHvariable, pero esto es solo una suposición. Por esto, me gustaría crear un script llamado 'alarm_starter.sh' con el siguiente contenido: PYTHONPATH={what ever it should be} sudo /home/d/Jarvis/alarm.py. Sin embargo, realmente no estoy seguro de esto. Quizás esto ayude: docs.python.org/tutorial/modules.html#the-module-search-path
kroq-gar78
9

Los scripts personalizados que se ejecutan al inicio como root se pueden ejecutar a través de rc.local.

Editar /etc/rc.localcon derechos de root:

sudo nano /etc/rc.local

y pon la linea

python /home/d/Jarvis/alarm.py

justo antes de la última línea, que debería decir exit 0. Reinicia para ver si funcionó.

phoibos
fuente
Esto resolvió mi problema para los programas de inicio automático en Raspbian.
Daniel Harris