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?

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!


¡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ó.


Esto resolvió mi problema para los programas de inicio automático en Raspbian.
— Daniel Harris
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.