【问题标题】:Remotely shutdown/reboot Linux boxes without SSH? [closed]在没有 SSH 的情况下远程关闭/重启 Linux 机器? [关闭]
【发布时间】:2012-01-21 15:20:07
【问题描述】:

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

【问题讨论】:

  • 我不知道存在任何东西。但也不确定为什么您不想只通过 ssh 登录。您可以使用 python 进行登录并编写一些命令,如下所示:goldb.org/sshpython.html 但是如果您真的不想使用 ssh,您可以编写一个简单的 python 脚本来打开一个套接字并监听请求,然后发出命令行“重启”。
  • "当然,如果它需要一些身份验证会很好" -- bbb-但是如果你想要很多ssh的功能集,你可以安装软件,为什么不安装ssh?
  • 嗯,总会有 xt_SYSRQ ;-)
  • 我同意布赖恩凯恩的观点。 ssh 有什么问题?这就像说你想在高速公路上开车但不想开车。
  • 我想远程控制很多台机器,一台一台的登录是不行的。我认为如果有这样的“电源管理服务器软件”,我可以向所有机器广播一个请求并完成任务。正如@TJD 所说,它可能只是“一个打开套接字并侦听请求的简单 python 脚本”,但是周围有没有现成的?

标签: linux shutdown remote-access reboot wake-on-lan


【解决方案1】:

正如 jørgensen 所指出的,您可以使用 SYSRQ (http://en.wikipedia.org/wiki/Magic_SysRq_key),这是一个直接与内核对话的 API。

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

1。 xt_SYSRQ(iptables 模块,内核)

有xt_SYSRQ,xtables-addons-common提供的iptables模块之一:http://manpages.ubuntu.com/manpages/oneiric/man8/xtables-addons.8.html

在 debian 上安装

#!/bin/bash
apt-get install -qq xtables-addons-common iptables
echo -n "yolo" >/sys/module/xt_SYSRQ/parameters/password
iptables -A INPUT -p udp --dport 9 -j SYSRQ

Shotgun 重启

#!/bin/bash
sysrq_key="sub"  # the SysRq key(s), Sync, Unmount, reBoot
password="yolo"
seqno="$(date +%s)"
salt="$(dd bs=12 count=1 if=/dev/urandom 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 stdin udp-sendto:$ipaddr:9

2。 sysrqd(tcp 4094 监听守护进程,用户空间)

此解决方案仅在您的砖块计算机能够处理 TCP 连接时才有效。

在 debian 上安装

#!/bin/bash
apt-get install -qq sysrqd
echo "yolo" > /etc/sysrqd.secret
service sysrqd restart

Shutgun 重启

我编写了一个脚本,https://gist.github.com/qolund/1470beaa1a63e034025d,但它只是端口 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”重启命令太快,计算机已经在重启。

【讨论】:

    【解决方案2】:

    几个选项:

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

    【讨论】:

    • Puppet 确实是个好主意!你必须有某种 crontab 定期查看 puppet 配置值,(CPU 时间的几个时钟周期。)只需根据一些标准重新配置值,puppet 广播它,bada bing,bada 繁荣!关掉! PS,您必须在任何程序重新启动时更改该配置,否则一旦完成启动它就会立即关闭;-)
    • 旧版本的 puppet 包含一个在受管节点上运行命令的工具。此功能现在由名为 MCollective 的单独工具处理。
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2016-04-16
    • 2019-08-06
    • 2021-10-31
    • 2019-12-07
    相关资源
    最近更新 更多