我需要直接从 Python代码关闭 Beaglebone black 的电源,而无需使用任何gpio按钮或任何硬件干预。
有命令行 shutdown -h now ,但是此命令在python代码上不起作用,因为它需要sudo密码...。 任何想法我如何与beaglebone black系统(没有sudo的linux命令行)进行交互,以便关闭电路板电源?
谢谢。
答案 0 :(得分:0)
好吧,我尝试了此解决方案,它正在起作用:
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]
答案 1 :(得分:0)
很抱歉打入这个老问题,但这有点伤害我的眼睛:-) 尽管“ sudo”是允许用户以root用户身份执行程序而不泄露root用户密码的正确方法,但这是一种非常糟糕的做法,包括以纯文本格式在脚本中为用户提供密码,甚至为“ sudoer”提供更多密码。 / p>
尽管它也有一些风险,但您可能会发现使用标志SUID可能是一种更安全的方法,只要确保将脚本仅安全地用于允许这样做的人即可。
如果您不了解SUID,尽管Internet困扰着示例,您仍可以在此处找到一些说明。