【发布时间】:2016-06-03 23:10:01
【问题描述】:
我有一台安装了 LAMP 的始终运行的 Raspberry Pi,还有一台功率更大的服务器。我希望能够从 Raspberry Pi 上的 PHP 页面启动和关闭第二台服务器。我在树莓派页面上的代码是:
<form action="" method="POST">
<input type="Submit" value="Wake Up" name="WOL_Submit">
<input type="Submit" value="Shutdown" name="WOL_shutdown">
</form>
<?php
if(isset($_POST['WOL_Submit']))
{
exec('sudo etherwake AA:BB:CC:DD:EE:FF');
echo "WOL Packet sent...";
}
if(isset($_POST['WOL_shutdown']))
{
exec('ssh user@192.168.1.100 "sudo /sbin/shutdown -P 0"');
echo "Shutdown sent...";
}
?>
我已经设置了 SSH 密钥,所以当我从 Pi SSH 到第二台服务器时,我不需要输入密码,如果我正常 SSH,这可以正常工作,例如使用 putty。
在第二台服务器上,我还使用user ALL=(ALL) NOPASSWD: /sbin/shutdown 将用户添加到 visudo。
来自网页的 Wake on LAN 命令工作正常,第二台服务器启动,但关机命令没有。我收到消息“已发送关闭...”但服务器没有关闭。我尝试在exec('ssh user@192... 命令中交换" 和',也尝试使用ssh -t,但服务器仍然没有关闭。
【问题讨论】: