PR

[Linux] システム起動時、sh で RT57i を再起動

計画停電(輪番停電)による影響で、Apcupsd を使ってシステムとUPSVMware Server2 を安全にシャットダウンする設定を行った。また、復電時の設定もUPS 内の EPROM を書き換えた。さらに、定期的にDDNS へ更新情報も送信することにも成功した。しかし、すっかり忘れていたが、ルータが問題になった。

現在使っているモデムはRT57i だ。よく使うルーターは BUFFALO 製のものなのだが、より高度な設定が必要になったため、YAMAHA のRT57i を使い始めている。

ここで問題になるのは、これまで多くのルータを使ってきたものの、RT57i に限ってはUPS が復帰して復電しても、モデムとの通信にタイムアウトしてしまうのか、手動で再起動する必要があった。多くのものが全自動で動くようになったのだから、この作業も自動化したい。

手動での手順

まず、手動での手順を確認しておく。

スポンサードリンク

$ telnet 192.168.100.1
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.

Password:

RT57i BootROM Ver. 1.02

RT57i Rev.8.00.91 (Mon May 11 16:09:50 2009)
 Copyright (c) 1994-2008 Yamaha Corporation.
 Copyright (c) 1998-2000 Tokyo Institute of Technology.
 Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.
 Copyright (c) 2002 RSA Security Inc. All rights reserved.
 Copyright (c) 2003 VoicePump, Inc.
XX:XX:XX:XX:XX:XX, XX:XX:XX:XX:XX:XX
Memory 16Mbytes, 2LAN, 1BRI
> administrator
Password:
# restart


手順の整理

  1. telnet でRT57i に接続
  2. パスワードを入力
  3. administrator に昇格
  4. パスワードを入力
  5. restart コマンドを送る

スクリプト作成


$ vi rt57i.sh

#!/bin/sh

# rt57i reboot
sleep 2; echo
sleep 2; echo administrator
sleep 2; echo
sleep 2; echo restarat

# 再起動をroot と特定のメールアドレスに送信
echo "Subject: Server `hostname` rebooted\n\nServer `hostname` rebooted" | sendmail root,[email protected]

$ chmod 700 rt57i.sh

実行テスト

$ sh ./rt57i.sh | telnet 192.168.100.1 >> auto-telnet.log

※ $ sh ./rt57i.sh | telnet 192.168.100.1 とすると実行中の画面を見ることができる(SJIS)

起動時に実行

/etc/rc.local を編集する。

$ sudo vi /etc/rc.local

以下を追加する。

sh /home/casey/rt57i.sh | telnet 192.168.100.1 >> auto-telnet.log

/home/casey/rt57i.sh | telnet 192.168.100.1 (←これでテストしたと思う)

テストする。

$ sudo /etc/rc.local

再起動してテストする。

これで完全自動化できたかな。

※計画停電になるような長時間電源を落とすことは今回が初めてのことになる

解決できない

スクリプト自体は正しく動作している。少なくともテスト時は。しかし、計画停電(輪番停電)(おそらく長時間の停電)から復帰すると、サーバーや他の通信機器は正常に復帰させることができたが、RT57i だけがダメだ。

いろいろと(シリアルコンソール以外)調査したところ、ルータにアクセスできず、通信も当然できない。ルータにアクセス出来れば再起動コマンドが有効になるが、アクセス出来ないからどう仕様も無い。

この場合の解決方法は今のところ2つあって、1つは「電源をぶち抜き、そして挿入すること」、もうひとつは「コンセントをインテリジェンスにOn/Off出来る環境にすること」。後者は予算がないし、対応出来ていないのはRT57i だけだから費用対効果がよろしくない。前者は前者で、自動化されていなければ意味が無い。ちなみに、電源投入の順番などでIP アドレスが取れていないなどそういう事に起因していないようだ。

現時点では「ハングアップ」している、と認識している。LED はさも通信しているかのように見えるが、その内容を知ることはできない。(syslog サーバー立てれば見えなくもないかな。ログは再起動すると消えてしまうようで。)

シリアルコンソールは正常に動作することを祈りつつ、検証したら追記する。ただし、なかかな再現することが難しいから思うように進まないかもしれない。

参考文献

コメント