关闭Beaglebone Black电源,无需按钮或硬件干预

时间:2018-09-20 09:09:02

标签: python linux beagleboneblack power-off

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

有命令行 shutdown -h now ,但是此命令在python代码上不起作用,因为它需要sudo密码...。 任何想法我如何与beaglebone black系统(没有sudo的linux命令行)进行交互,以便关闭电路板电源?

谢谢。

2 个答案:

答案 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困扰着示例,您仍可以在此处找到一些说明。

https://www.howtoforge.com/linux_setting_suid_sgid_bits