Linux (Ubuntu) マシンにログインせずに、リモートでシャットダウンして再起動する必要があります(それ以外の場合は、単純なコマンドで作業できます)。マシンは単なる安価な PC であるため、特別な電源管理ハードウェアはインストールされていません (ただし、wake-on-lan は可能です)。これらのボックスにインストールできる、再起動/シャットダウンのリモート要求をリッスンし、それに応じて動作する「電源管理サーバー」ソフトウェアはありますか? もちろん、リクエストに応答するために何らかの認証 (パスワード) が必要になると便利です。
質問する
47126 次
2 に答える
12
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 があります。
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というスクリプトを作成しましたが、ポート 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' 再起動コマンドが速すぎるため、接続が適切に閉じられていません。コンピューターは既に再起動しています。
于 2015-05-19T14:53:24.267 に答える