无需按钮或硬件干预即可关闭 Beaglebone Black

Power OFF the Beaglebone Black without Button or hardware intervention

我需要直接从 Python 代码 关闭 Beaglebone black,而不使用任何 gpio 按钮或任何硬件干预。

有命令行 shutdown -h now 但此命令不适用于 python 代码,因为它需要 sudo 密码.... 知道如何与 beaglebone black 系统(linux 命令行不带 sudo)交互以便关闭电路板电源吗?

谢谢。

好吧,我尝试了这个解决方案并且它有效:

 from subprocess import Popen, PIPE

 sudo_password = 'temppwd'
 command = 'shutdown -h now'.split()

 p = Popen(['sudo', '-S'] + command, stdin=PIPE, stderr=PIPE,
              universal_newlines=True)
sudo_prompt = p.communicate(sudo_password + '\n')[1]

很抱歉跳出这个老问题,但它有点伤了我的眼睛:-) 虽然 'sudo' 是允许用户以 root 用户身份执行程序而不泄露 root 密码的正确方法,但这是一个非常糟糕的做法,在脚本中以纯文本形式包含用户密码,对于 'sudoer'.

虽然它也有一些风险,但您可能会发现使用标志 SUID 可能是一种更安全的方法,只要确保脚本仅供允许这样做的人使用即可。

如果您不了解 SUID,您可以在这里找到一些解释,尽管 Internet 上到处都是例子。

https://www.howtoforge.com/linux_setting_suid_sgid_bits