使用 sudo 在终端中运行启动程序

Bra*_*don 8 startup root lubuntu

我需要在启动时(在 Lubunt 上)在终端myscript.py中运行 python 脚本。这个脚本需要root。

我已经设置了一个.desktop运行以下命令的文件:

lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"
Run Code Online (Sandbox Code Playgroud)

终端窗口在启动时打开并运行脚本,但在 Python 脚本返回错误时关闭(因为它不是以 root 身份运行)。当我将其更改Exec=为...

lxterminal --command="sudo python /home/d/Jarvis/alarm.py && /bin/bash"
Run Code Online (Sandbox Code Playgroud)

...(以 为前缀的命令sudo)有效。但是,终端在启动时打开并显示

[sudo] password for d: \
Run Code Online (Sandbox Code Playgroud)

提示,要求我输入密码。我希望 python 脚本在启动时完全自动执行,无需用户交互。

我怎样才能做到这一点?

pho*_*bos 9

在启动时以 root 身份执行的自定义脚本可以通过rc.local.

/etc/rc.local使用 root 权限编辑:

sudo nano /etc/rc.local
Run Code Online (Sandbox Code Playgroud)

并把线

python /home/d/Jarvis/alarm.py
Run Code Online (Sandbox Code Playgroud)

就在最后一行之前,应该说exit 0. 重新启动以查看它是否有效。


kro*_*r78 5

如果你想在登录而不是启动时使用它(因为我不知道如何在没有 X 服务器启动的情况下打开 LXTerminal),你必须在 /etc/sudoers 文件中添加一个例外,这样你就不会被提示你的密码。

为此,请运行sudo visudo并添加以下内容:

<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py
Run Code Online (Sandbox Code Playgroud)

确保在文件末尾添加它以使其正常工作。我还将设置alarm.py为可执行文件的权限以使其正常工作。因此,执行此操作以将其设置为可执行文件:

chmod +x /home/d/Jarvis/alarm.py
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!