我很好奇执行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小时长,在那之后我不想要shell提示符,(在执行第一个命令时,不知怎么可能提示?)我的系统是ubuntu18.04,所以我想“sudo”都不能工作,因为sudo的超时(15分钟?)。
一种选择是为命令或脚本编写它并执行sudo ./script进入超级用户模式,但考虑到它正在执行python程序,它是否安全?(这是一个简单的家庭PC安装,所以也许这不是一个问题)
还有其他我不知道的方式吗?
-编辑-编辑
我试着运行sudo sh -c 'python py_name.py && sudo shutdown -h now'。sudo sh -c 'command'执行另一个shell来运行命令,它可以这样工作,因为所有的shell都在sudo中。问题是,我使用了python环境,而这个新的shell并没有被激活。
-解决
真正的解决方案是(通过解决方案),将sudoers文件sudo visudo更改为在运行sudo shutdown时不需要密码的列表中添加关机。每个sudoers文件是不同的,但在我的示例中,我需要添加my_username ALL=(ALL) NOPASSWD: /sbin/shutdown,其中第一个“空格”是选项卡,而/sbin/shutdown是要执行的命令的路径(您可以使用command -v shutdown检查路径)。
发布于 2020-05-23 16:20:10
您可以在/etc/sudoers文件中为该用户设置无密码sudo。例如,在ssh服务器上(当然也可以限制更多,即只允许关闭为无密码等):
youruser ALL = ( ALL ) NOPASSWD: ALL
https://unix.stackexchange.com/questions/588523
复制相似问题