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のシャットダウンが走るようになった。この特定のサーバは、危険だから管理用に割り切ることにしよう。
な記事は見つけていた。
でも、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のシャットダウンが走るようになった。この特定のサーバは、危険だから管理用に割り切ることにしよう。