web-dev-qa-db-ja.com

SSHなしでLinuxボックスをリモートでシャットダウン/再起動しますか?

Linux(Ubuntu)マシンをリモートでシャットダウンして再起動する必要がありますログインせずに(それ以外の場合は単純なコマンドで作業できます)。マシンは安価なPCであるため、特別な電源管理ハードウェアはインストールされていません(ただし、ウェイクオンランは可能です)。これらのボックスにインストールできる、再起動/シャットダウンのリモート要求をリッスンしてそれに応じて動作する、ある種の「電源管理サーバー」ソフトウェアはありますか?もちろん、リクエストに応答するために何らかの認証(パスワード)が必要な場合は便利です。

10
jasxun

Jørgensenが指摘しているように、カーネルと直接通信するAPIであるSYSRQ( http://en.wikipedia.org/wiki/Magic_SysRq_key )を使用できます。

これらは非常にハードコアであり、ハードウェアに害を及ぼす可能性があることに注意してください。 1回のUDPパケット転送で再起動するのに時間がかかります。ブーム。ライブディスクレスコンピューターでのみ使用します。

1. xt_SYSRQ(iptablesモジュール、カーネル)

Xtables-addons-commonによって提供されるiptablesモジュールの1つであるxt_SYSRQがあります: 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

ショットガンの再起動

#!/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

シャットガンの再起動

スクリプトを作成しました https://Gist.github.com/qolund/1470beaa1a63e034025d しかし、それはただのTCPポート4094での接続です。パスワードを送信する必要がありますとコマンド、

# 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'再起動コマンドが速すぎるため、接続が適切に閉じられていません。コンピュータはすでに再起動しています。

10
Nope

いくつかのオプション:

このツールは、マシンをシャットダウンするためのものではありません(ただし、シャットダウンすることはできます)。多くのマシンを管理するための構成管理フレームワークであり、構成の変更、パッケージのインストールと更新を処理し、必要なすべてのコマンドを1台のマシンで実行できます。 、マシンのセット、またはネットワーク全体。

4