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

Мне нужно запустить скрипт 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"

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

[sudo] password for d: \

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

Как мне это сделать?

8
задан 26 April 2018 в 11:35

2 ответа

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

Отредактируйте /etc/rc.local с правами root:

sudo nano /etc/rc.local

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

python /home/d/Jarvis/alarm.py

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

0
ответ дан 26 April 2018 в 11:35

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

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

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

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

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

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

0
ответ дан 26 April 2018 в 11:35

Другие вопросы по тегам:

Похожие вопросы: