从python调用hibernate命令

时间:2015-02-26 15:39:55

标签: python linux ubuntu

我有一个python脚本,它将调用系统调用来休眠系统(Ubuntu-Server)。我试试

 #!/usr/bin/env python

 import os 
 os.system('pm-hibernate')

如果我在没有sudo权限的情况下运行它,我会得到正确的错误:

This utility may only be run by the root user.

但是当用sudo-rights调用这个脚本时,没有任何事情发生。 如何从python中调用hibernate-command?

1 个答案:

答案 0 :(得分:1)

使用sudo运行它:

#!/usr/bin/env python
from subprocess import check_call

check_call(['sudo', '/usr/sbin/pm-hibernate'])

并将运行此脚本的用户配置为允许在没有密码的情况下运行pm-hibernate,例如,创建/etc/sudoer.d/pm-hibernate文件并在其中写入%admin ALL = NOPASSWD: /usr/sbin/pm-hibernatesudo visudo -f /etc/sudoers.d/pm-hibernate)。

确保/etc/sudoers导入/etc/sudoers.d目录(sudo visudo)和/etc/sudoer.d/pm-hibernate文件具有0440权限:

$ sudo chmod 0440 /etc/sudoer.d/pm-hibernate

另见sudo less /etc/sudoers.d/README

该命令允许admin组的所有成员在没有密码的情况下运行sudo pm-hibernate。运行groups,查看您所属的群组。