Executando um programa de inicialização no terminal com sudo

8

Eu preciso executar um script python em um terminal, myscript.py na inicialização (no Lubunt). Este script requer raiz.

Eu configurei um arquivo .desktop que executa o seguinte comando:

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

A janela do terminal é aberta na inicialização e executa o script, mas depois fecha quando o script Python retorna um erro (porque não está sendo executado como raiz). Quando eu mudar o Exec= para isso ...

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

... (comando prefixing com sudo ) que funciona. No entanto , o terminal é aberto na inicialização e exibe o

[sudo] password for d: \

, solicitando que eu insira minha senha. Eu gostaria que a execução do script python na inicialização fosse totalmente automática, sem interação do usuário.

Como posso conseguir isso?

    
por Brandon 07.10.2012 / 22:17

2 respostas

5

Se você quiser no login e não na inicialização (como não vejo como o LXTerminal pode ser aberto sem o servidor X estar ativo), você precisa adicionar uma exceção ao arquivo / etc / sudoers para que não ser solicitada sua senha.

Para fazer isso, execute sudo visudo e adicione o seguinte:

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

Certifique-se de adicionar isso no final do arquivo para que isso funcione. Eu também configuraria as permissões de alarm.py para executável para que isso funcionasse. Então, faça isso para defini-lo como executável:

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

Espero que ajude!

    
por kroq-gar78 07.10.2012 / 22:47
9

Scripts personalizados que são executados na inicialização como root podem ser executados via rc.local .

Edite /etc/rc.local com direitos de root:

sudo nano /etc/rc.local

e coloque a linha

python /home/d/Jarvis/alarm.py

pouco antes da última linha, que deve dizer exit 0 . Reinicialize para ver se funcionou.

    
por phoibos 07.10.2012 / 22:35