我有一个始终运行且安装了 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 key ,所以当我从 Pi SSH 连接到第二台服务器时不需要输入密码,如果我正常 SSH,这就可以正常工作,例如使用 putty。
在第二台服务器上,我还使用 user ALL=(ALL) NOPASSWD:/sbin/shutdown
将用户添加到 visudo。
网页上的 Wake on LAN 命令工作正常,第二台服务器启动,但关闭命令没有。我收到消息“关闭已发送...”,但服务器没有关闭。我尝试在 exec('ssh user@192...
命令中交换 "和 ',也尝试使用 ssh -t
,但服务器没有关闭仍然。
最佳答案
尝试 ssh -i/path/to/id_rsa user@192.... 并确保 key 是 chmod 600 并且归 www-data 所有,或者任何运行 php 的用户
关于php - 使用 PHP 关闭远程 linux 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624700/