TeraStasion TS-RIXL をリモートからシャットダウンするるん! | とりあえず今日いじったシステムの公開できる箇所

TeraStasion TS-RIXL をリモートからシャットダウンするるん!

http://www.argv.org/~chome/blog/noisefactory/2010/02/tera-stationremoteshutdown.html
な記事は見つけていた。

でも、Web画面の構成は変更になっていた。

仕方ないので、SeleniumIDEで、ちまちま記録を取りながら確認すると、部品の名称が毎回異なっている

こんなもの手に負えないと、半ベソかいているところで発見
http://forums.buffalotech.com/index.php?topic=10094.0

早速PHP入れて実行
一発で成功

無事に、TeraStasion TS-RIXLをシェルからシャットダウンできるようになった

中身の解析とrcスクリプト化はこれから

-----     -----     -----     -----     -----

さて実装開始(おいおい解析は?w)

TeraStationのIP(またはホスト名)、ユーザ名、パスワードを、引数渡しにした。
こいつは、rootやadminから参照さえできればいい。

# vi /opt/sdts.php
-----
<?php
        // login-process
        $work = "curl -d \"bufaction=verifyLogin&user=$argv[2]&password=$argv[3]\" http://$argv[1]/dynamic.pl";
        $result = shell_exec($work);
        $cookie_id = substr($result,44,32);
        echo $result."<hr>";

        // shutdown tera-station, if you want to reboot it change the shutdown part with reboot
        $work2 = "http://" . $argv[1] ."/dynamic.pl?bufaction=shutRestartLS&action=shutdown&";
        $ch = curl_init($work2);
        curl_setopt($ch, CURLOPT_COOKIE, "webui_session_admin=".$cookie_id."_en_0");
        $output = curl_exec($ch);
        curl_close($ch);
        echo $output."<hr>";
?>
-----

rcスクリプトはコレ

# vi /etc/init.d/sdts
-----
#!/bin/sh
#
# sdts  script to shutdown Tera Station TS-RIXL
#
# chkconfig: 2345 01 89
# description: Shutdown TeraStation!!!
#

SERVER=192.168.0.200 # TeraStationホスト名
USER=admin           # ユーザ
PASSWD=password      # パスワード

case $1 in
start)
    touch /var/lock/subsys/sdts
;;
stop)
    rm -f /var/lock/subsys/sdts
    /usr/bin/php -f /opt/sdts.php $SERVER $USER $PASSWD
    echo "Wait for TeraStation Shutdown"
;;
esac
-----

この、ロックファイルを作っておかないと、stop側の処理に入らなかった。
ここ忘れないように>俺

rcスクリプトsdtsの追加
# chkconfig --add sdts

rcスクリプトsdtsの状態確認(全部offなら chkconfig sdts on を実行)
# chkconfig --list sdts
sdts            0:off   1:off   2:on    3:on    4:on    5:on    6:off

rcスクリプトsdtsの動作開始(ロックファイル作るだけ)
# service sdts start

rcスクリプトsdtsの動作停止
# service sdts stop

ここまでうまくいけばサーバ停止と同時にTeraStationを停止できる。

haltの時は止めていいけど、rebootの時は、本当は止めたくないなぁ。
TeraStationのWakeUpってできるのかな

さてこれで、特定のサーバを正常な手順で止めると、自動的にTeraStationのシャットダウンが走るようになった。この特定のサーバは、危険だから管理用に割り切ることにしよう。