【发布时间】:2015-04-16 14:52:58
【问题描述】:
我正在尝试制作一个程序,允许我在用户需要时关闭或重新启动计算机。我会把这个发给我的朋友,所以我不知道是哪个操作系统。我也在使用 tkinter,这是一个示例代码;
import subprocess
import os
time = "10"
if os.name == "posix":
subprocess.call(["shutdown", "-h", time])
elif os.name == "nt":
subprocess.call(["shutdown", "-s", "-t", time])
但是,在 linux 上,它会在关闭之前向用户询问密码。所以这个程序如果在关机前询问密码是没用的。我尝试在if 语句之后使用%admin ALL = NOPASSWD: /sbin/shutdown,但它也不起作用。如何在linux上传递这个密码?
【问题讨论】:
-
您希望这个程序如何运行?从命令行还是从 GUI?为什么提示密码会使程序无用?
-
@texasflood 因为这个想法来自懒惰:-) 当我懒得站起来关闭电脑时,我想设置一个计时器。所以询问密码会让这个没用。
-
你可以用sudo来运行python程序,然后你只需要在运行时输入密码,而不是在它真正关闭时输入密码。 sudo 应该为孩子们继承
-
看来您真正的问题是“如何在没有密码的情况下关闭计算机”。 “我尝试在 if 语句后使用 %admin ALL = NOPASSWD: /sbin/shutdown 但它也不起作用。” -- 应该没有
if语句,你应该保存这一行/etc/sudoers.d/shutdown(在 Debian 上)或类似的。确保文件模式为0440,并且您的/etc/sudoers文件最后包含#includedir /etc/sudoers.d。如有必要,请使用visudo进行编辑。
标签: python linux operating-system subprocess python-3.4