php - 使用 PHP 关闭远程 linux 服务器

标签 php linux ssh

我有一个始终运行且安装了 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/

相关文章:

php - 为我的网站创建正确的数据库结构(mysql)

php - Ajax 拒绝获取服务器时间

php - 稍后在 PHP 中启动 bash 脚本

c - 为什么 stat 使用 readdir 中的名称失败?

通过 ssh 克隆 Git,通过 https 推送

ssh - 使用 ssh 隧道从远程服务器复制到本地计算机的 shell 脚本 - scp

php - 如何在 symfony2 中使用具有多个不同表单小部件的实体字段类型数组

php - yum安装后如何启动php?

linux - wget:获取匹配正则表达式的文件

ssh - 尝试在 Centos (Rhel 7.5) 上运行 google-chrome 时无法打开 X 显示