Ejecute el comando automáticamente como root después de iniciar sesión

Ejecute el comando automáticamente como root después de iniciar sesión

Estoy usando evrouter para simular las pulsaciones de teclas de los botones adicionales de mi mouse. Funciona muy bien, pero necesito ejecutar el comando con sudo para que funcione, de modo que no pueda usar mi DE para manejar el inicio automático.

Consideré init.d pero, por lo que he oído, esto solo funciona para diferentes etapas del arranque y necesito que se ejecute como root.despuésacceso.

$ cat .evrouterrc 
"Logitech G500" "/dev/input/event4" any key/277 "XKey/0"
"Logitech G500" "/dev/input/event4" any key/280 "XKey/9"
"Logitech G500" "/dev/input/event4" any key/281 "XKey/8"
$ sudo evrouter /dev/input/event4

Editar:Muy bien, parece que puedo usar session-setup-scriptla opción de lightdm.conf para ejecutar un script como root. El script que tengo se encuentra a continuación, pero como se esperaba, cuando se ejecuta como root, id -uya no es igual a 1000 y la instrucción if nunca se ejecuta. ¿Existe algún argumento o variable que pueda usar para obtener el nombre de usuario o la identificación?

Respuesta1

Después de que su computadora arranca, Linux ejecuta lo que esté en el archivo crontab de su sistema. Cron es un programa que programa comandos, programas o scripts para que se ejecuten en momentos muy específicos del día. Cada usuario tiene un crontab, pero en esta situación el crontab del sistema es apropiado para tal trabajo.

Puede configurar cron para ejecutar comandos o programas cuando se inicia el sistema. Entonces, creo que esto es lo que quieres decir.

Para editarlo en consecuencia, deberá abrir el archivo crontab de su sistema ejecutando el comando. sudo vim /etc/crontabSiéntase libre de reemplazar "vim" con su editor de texto cli favorito.

Agregue la línea (reemplazando las cosas apropiadas con exactamente lo que necesita, como comandos, etc.) debajo de todas las demás. @reboot evrouterNota: La mejor idea podría ser crear un script, colocar los comandos en él y ejecutar el script usando crontab. Realmente es tu elección.

Dependiendo de su distribución, es posible que tenga o no que indicar quién desea que se ejecute el comando después. @rebootLa mayoría de las veces, el archivo crontab tendrá algunos comentarios en la parte superior del archivo para indicarle. Por supuesto, mirar las otras entradas de este archivo probablemente le resultará más útil.

Respuesta2

Al usar lightdm.confel session-setup-scriptvalor de pude ejecutar el comando como root como se esperaba.

session-setup-script=/opt/hacks/lightdm-startup

Mientras tanto, en otra carpeta:

#!/bin/bash
if [ "$USER" = "j" ]
then
evrouter /dev/input/event4
fi

Todavía no estoy seguro de por qué ==no funcionó en la declaración if y =lo hizo... Bash es errático a veces.

información relacionada