用PHP关闭远程linux服务器

时间:2016-06-03 23:10:02

标签: php linux ssh

我总是运行带有LAMP的Raspberry Pi,以及第二台具有更大马力的服务器。我希望能够从Raspberry Pi上的PHP页面启动并关闭第二台服务器。我在Raspberry Pi页面上的代码是:

<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时我不需要输入密码,如果我正常使用putty,这可以正常工作。

在第二台服务器上,我还使用user ALL=(ALL) NOPASSWD: /sbin/shutdown将用户添加到visudo。

网页上的Wake on LAN命令工作正常,第二台服务器启动,但shutdown命令没有启动。我收到消息&#39; Shutdown sent ...&#39;但服务器没有关机。我试过交换&#34;和&#39;在exec('ssh user@192...命令中,并尝试使用ssh -t,但服务器仍未关闭。

1 个答案:

答案 0 :(得分:0)

尝试ssh -i / path / to / id_rsa user @ 192 ....并确保密钥为chmod 600并由www-data拥有,或者运行的任何用户php