我有 3 台服务器,一台 Qnap NAS 和 2 台控制视频监控的 Rpi3、一些基本的家庭自动化设备等等。
我刚刚配置了一台服务器来监控 UPS,以便能够知道何时由于 UPS 电池电量耗尽而关闭服务器。
我的问题很简单:有没有办法无需通过 SSH 登录即可向服务器发送关机命令?
我希望监控 UPS 的服务器在需要时无需登录即可向其他两台服务器发送关机消息。
有可能吗?有什么协议或其他方法吗?
谢谢你的帮助,丹尼尔
答案1
我认为ssh
这是最佳做法。您可以进行设置,这样登录时就不必发送密码。您可以将本地 ssh 密钥复制到服务器,这样发送 ssh 命令时就无需输入密码。注意:这适用于远程主机上的任何登录,包括 root。
ssh-copy-id user@server
您需要将user
上述命令更改为可以执行关机的任何用户。要执行 root 操作,则应为ssh-copy-id root@server
。
当 ssh 复制完成后,您应该能够发送命令而无需输入密码登录。
然后在您的脚本或将命令发送到远程服务器的脚本中它看起来像这样:
ssh root@server 'shutdown -h now'
无需密码并且服务器将关闭。
希望这可以帮助!
答案2
你可以(这是 Perl 编程的简单问题)编写一个 Perl 脚本来监听特定端口,并在收到正确的消息后关闭。从“Programming Perl”一书(Camel Book!)中的示例开始,请参阅第 15 章。