python程序+ python结束后sudo shutdown(上半部分后不提示输入密码的最佳方法?)

python程序+ python结束后sudo shutdown(上半部分后不提示输入密码的最佳方法?)

我很好奇执行 python 程序的最佳方法(最安全的方法)以及在程序结束后关闭系统(在 ssh 会话中使用 sudo )。

我最初要做的是:

nohup python py_name.py && sudo shutdown -h now &或者 nohup python py_name.py ; sudo shutdown -h now &

sudo因为我处于 ssh 会话中,没有它我就无法关闭,并且nohup因为&我想在执行后离开系统)

问题是 python 程序大约需要 5-8 小时长,我不希望之后出现 pw 的 shell 提示(在执行第一个命令时是否有可能提示?)。我的系统是 ubuntu 18.04,所以我猜想“sudoing”都无法工作,因为 sudo 超时(15 分钟?)。

一种选择是进入两个命令的超级用户模式或编写脚本并执行sudo ./script,但考虑到它正在执行 python 程序,它安全吗? (这是一个简单的家庭电脑设置,所以也许这不是问题)

还有其他我不知道的方法吗?

- - - 编辑 - - -

我试着跑sudo sh -c 'python py_name.py && sudo shutdown -h now'sudo sh -c 'command'执行另一个 shell 来运行命令,它可以这样工作,因为所有 shell 都在 sudo 中。问题是我使用 python 环境,并且这个新 shell 没有随它一起激活。

- - -解决方案 - - -

真正的解决方案如上所述(通过解决方案),更改 sudoers 文件sudo visudo以将 shutdown 添加到运行时不需要密码的列表中sudo shutdown。每个 sudoers 文件都是不同的,但就我而言,我需要添加my_username ALL=(ALL) NOPASSWD: /sbin/shutdown,其中第一个“空格”是制表符,并且/sbin/shutdown是您要执行的命令的路径(您可以使用 检查路径command -v shutdown)。

答案1

您可以在 /etc/sudoers 文件中为此用户设置无密码 sudo。例如在 ssh 服务器上(当然也可以更严格,即只允许关闭无密码等):

你的用户 ALL = (ALL) NOPASSWD: ALL

相关内容