Запуск программы запуска в терминале как sudo

7

Мне нужно запустить скрипт python в терминале, myscript.py при запуске (на Lubunt). Для этого скрипта требуется root.

Я установил файл .desktop, который выполняет следующую команду:

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

Окно терминала открывается при запуске и запускает скрипт, но затем закрывается, когда скрипт Python возвращает ошибку (поскольку он не запускается с правами root). Когда я меняю Exec = на это ...

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

... (команда prefixing с 'sudo'), которая работает. Однако , терминал открывается при запуске и отображает

[sudo] password for d: \

, требуя ввода пароля. Я хочу, чтобы выполнение скрипта python при запуске было полностью автоматическим без взаимодействия с пользователем.

Как я могу это сделать?

    
задан Brandon 07.10.2012 в 20:17
источник

2 ответа

5

Если вы хотите его при входе в систему, а не при запуске (поскольку я не вижу, как LXTerminal можно открыть без поддержки X-сервера), вам нужно добавить исключение в файл / etc / sudoers, чтобы вы не вам будет предложено ввести пароль.

Для этого запустите sudo visudo и добавьте следующее:

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

Убедитесь, что вы добавили это в конец файла, чтобы это работало. Я также установил бы разрешения alarm.py на исполняемый файл для этого. Итак, сделайте это, чтобы установить его как исполняемый файл:

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

Надеюсь, что это поможет!

    
ответ дан kroq-gar78 07.10.2012 в 20:47
источник
8

Пользовательские скрипты, которые запускаются при запуске с правами root, могут быть запущены через rc.local .

Изменить /etc/rc.local с правами root:

sudo nano /etc/rc.local

и поместите строку

python /home/d/Jarvis/alarm.py

перед последней строкой, которая должна сказать exit 0 . Перезагрузите, чтобы убедиться, что это сработало.

    
ответ дан phoibos 07.10.2012 в 20:35
источник

Ознакомьтесь с другими вопросами по меткам