是否在不使用SSH的情况下远程关闭/重新启动Linux机箱?

是否在不使用SSH的情况下远程关闭/重新启动Linux机箱?,linux,shutdown,remote-access,reboot,wake-on-lan,Linux,Shutdown,Remote Access,Reboot,Wake On Lan,我需要远程关闭并重新启动Linux(Ubuntu)机器,而无需登录它们(否则简单的命令就可以完成这项工作)。这些机器只是廉价的PC机,因此没有安装特殊的电源管理硬件(尽管它们可以在局域网上唤醒)。是否有某种“电源管理服务器”软件可以安装在这些盒子上,它可以监听远程重启/关机请求并相应地执行操作?当然,如果它需要一些身份验证(密码)才能响应请求,那就太好了。一些选项: 这些工具并不完全用于关闭机器(但它们可以做到),它们是用于管理大量机器的配置管理框架,它们可以处理配置更改、软件包安装和

我需要远程关闭并重新启动Linux(Ubuntu)机器,而无需登录它们(否则简单的命令就可以完成这项工作)。这些机器只是廉价的PC机,因此没有安装特殊的电源管理硬件(尽管它们可以在局域网上唤醒)。是否有某种“电源管理服务器”软件可以安装在这些盒子上,它可以监听远程重启/关机请求并相应地执行操作?当然,如果它需要一些身份验证(密码)才能响应请求,那就太好了。

一些选项:


这些工具并不完全用于关闭机器(但它们可以做到),它们是用于管理大量机器的配置管理框架,它们可以处理配置更改、软件包安装和更新,并在一台机器或一组机器中运行您想要的所有命令,或者在整个网络中。

正如jørgensen所指出的,您可以使用SYSRQ(),一个直接与内核对话的API

当心,这些都是硬核,可能会损害你的硬件。重新启动需要单个UDP数据包传输的时间。繁荣我们只在实时无盘计算机上使用它

1.xt_SYSRQ(iptables模块,内核) xt_SYSRQ是xtables插件提供的iptables模块之一,常见:

在debian上安装
#/bin/bash
apt-get-install-qq-xtables插件公共iptables
echo-n“yolo”>/sys/module/xt_SYSRQ/parameters/password
iptables-A INPUT-p udp-dport 9-j SYSRQ
猎枪重启
#/bin/bash
sysrq_key=“sub”#sysrq密钥、同步、卸载、重新启动
password=“yolo”
seqno=“$(日期+%s)”
salt=“$(dd bs=12 count=1 if=/dev/uradom 2>/dev/null | openssl enc-base64)”
ipaddr=“$1”
req=“$sysrq_key,$seqno,$salt”
req=“$req,$(echo-n”$req,$ipaddr,$password”| sha1sum | cut-c1-40)
echo“$req”| socat标准数据udp发送到:$ipaddr:9
2.sysrqd(tcp 4094侦听守护程序,userland) 此解决方案仅在您的bricked计算机能够处理TCP连接时有效

在debian上安装
#/bin/bash
apt get安装-qq sysrqd
echo“yolo”>/etc/sysrqd.secret
服务sysrqd重启
关机重启 我制作了一个脚本,但它只是端口4094上的TCP连接。 您需要发送密码和命令

# telnet 172.16.42.180 4094
Trying 172.16.42.180...
Connected to 172.16.42.180.
Escape character is '^]'.
sysrqd password: nope
Go away!
Connection closed by foreign host.
# telnet 172.16.42.180 4094
Trying 172.16.42.180...
Connected to 172.16.42.180.
Escape character is '^]'.
sysrqd password: yolo
sysrq> sub
[..]

连接未正确关闭,因为“b”reboot命令太快,计算机已在重新启动。

我不知道存在任何问题。但也不确定为什么不想通过ssh登录。您可以使用python进行登录并编写一些命令的脚本,如下图所示:但是如果您确实不想使用ssh,您可以编写一个简单的python脚本来打开套接字并侦听请求,然后发出命令行“重新启动”。“当然,如果它需要一些身份验证,那就太好了。”--b-b-b-但是如果您想要大量的
ssh
功能集,并且您可以安装软件,为什么不直接安装
ssh
?当然,总是有xt_SYSRQ;-)我同意布莱恩·凯恩的观点。宋承宪怎么了?这就像说你想在高速公路上开车,但不想开车。我想远程控制很多机器,一个接一个地登录它们并不是一个好办法。我认为,如果有这样一个“电源管理服务器软件”,我可以向所有机器广播一个请求,然后完成这个任务。正如@TJD所说,它可能只是“一个打开套接字并侦听请求的简单python脚本”,但是否存在一个现有的脚本?Puppet实际上是一个非常好的主意!你必须让一些crontab定期查看puppet配置值(CPU时间的几个时钟周期)。只要根据一些标准重新配置值,puppet就会播放它,bada bing,bada boom!关机!PS,您必须在任何程序重新启动时更改该配置,否则一旦完成引导,它将立即关闭;-)旧版本的puppet包括一个在托管节点上运行命令的工具。此功能现在由一个名为MCollective的单独工具处理。