无需按钮或硬件干预即可关闭 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 上到处都是例子。
我需要直接从 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 上到处都是例子。