Linux(Ubuntu)マシンをリモートでシャットダウンして再起動する必要がありますログインせずに(それ以外の場合は単純なコマンドで作業できます)。マシンは安価なPCであるため、特別な電源管理ハードウェアはインストールされていません(ただし、ウェイクオンランは可能です)。これらのボックスにインストールできる、再起動/シャットダウンのリモート要求をリッスンしてそれに応じて動作する、ある種の「電源管理サーバー」ソフトウェアはありますか?もちろん、リクエストに応答するために何らかの認証(パスワード)が必要な場合は便利です。
Jørgensenが指摘しているように、カーネルと直接通信するAPIであるSYSRQ( http://en.wikipedia.org/wiki/Magic_SysRq_key )を使用できます。
これらは非常にハードコアであり、ハードウェアに害を及ぼす可能性があることに注意してください。 1回のUDPパケット転送で再起動するのに時間がかかります。ブーム。ライブディスクレスコンピューターでのみ使用します。
Xtables-addons-commonによって提供されるiptablesモジュールの1つであるxt_SYSRQがあります: http://manpages.ubuntu.com/manpages/oneiric/man8/xtables-addons.8.html
#!/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
このソリューションは、ブリックコンピューターがTCP接続を処理できる場合にのみ機能します。
#!/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'再起動コマンドが速すぎるため、接続が適切に閉じられていません。コンピュータはすでに再起動しています。