▲ PC LABO Menu


YahooBBのリンク切れを調べる際に作成したスクリプト



by mieki256
2004/04/17

問い合わせがあったので、一応まとめてみたり。何かの参考になれば。<なるのか?


記録スクリプト

perlスクリプトを作成して、ADSL回線のリンク切れする時間帯を記録した。

スクリプトはこちら → pingchk.pl
(txtファイルで置いてあるので、保存後、pingchk.pl にリネームしてくれればと。)

やってることは、一定時間毎にどこぞのサーバにpingを打って、正常応答かログを残す(記録を残す)だけ。
回線が切れていない(かつ、相手先のサーバが落ちてなければ)、正常応答が返ってくるし、
回線が切れていれば、応答が無かった旨、記録される。

例えば、以下のような記録が残る。
# job start 2004/04/17 20:10:29 . Interval 15 sec. Timeout 5 sec. Retry 3 . Processing stop pingbreak.txt is deleted. 
2004/04/17 20:10:29 .
2004/04/17 20:10:44 .
2004/04/17 20:10:59 .
2004/04/17 20:11:14 .
2004/04/17 20:11:29 .
2004/04/17 20:11:44 X
2004/04/17 20:11:59 .
2004/04/17 20:12:14 .
「.」なら正常応答、「X」なら応答が無かったということ。

※ pingと言えども、かなりの頻度で相手先に送ければ負荷が増えるだろうし、その手の侵入行為と間違われそうでもあるので、本来やるべきではないのかもしれないけど。こうして調べなければならない=かなり切羽詰ってる緊急事態でもあるので、そのへん多目に見てほしいような。…そもそも頻繁にリンク切れするような回線を提供してる企業側に問題がある・企業側で調べるべきことのような気もするけど。ユーザ側がこうして調べるのもおかしな話。ちなみに当時は、YahooBBのサーバや、利用してるプロバイダのサーバにpingを送って確認してた。


使い方

perl が利用できる環境で、
perl pingchk.pl
と入力する。オプションで、
-i 時間間隔(単位は秒、デフォルトは10秒)
-w タイムアウト時間(単位は秒、デフォルトは5秒)
も指定できる。例えば、

perl pingchk.pl -i 30

と打てば、30秒毎に記録を取る。

記録は、pinglog.txt というファイルに残る。

そのままだと記録を取り続けるので、停止するときは、スクリプトが自動作成した pingbreak.txt を削除すれば、そのうち停止してくれる<オイ。(Ctrl+C で停止すると、それ以後のalarm云々の動作に不具合が出るらしいので、こんな止め方にしている。)

ログファイル名等は、スクリプト中の最初のほうで定義してあるので、保存場所等を変更したい場合は直接中身を修正してくれればと。



集計画像生成スクリプト

pinglog.txt だけを眺めていてもよくわからないので、集計画像を生成するperlスクリプトを作成した。

スクリプトはこちら → pinggraphout.pl
(txtファイルで置いてあるので、保存後、pinggraphout.pl にリネームしてくれればと。)

カレントフォルダの pinglog.txt を読み込んで、以下のような画像を生成する。

集計結果画像の例

緑色の点が、応答が返ってきた時間帯。(=回線は切れてない)
赤色の点(線)が、応答がなかった時間帯。(=回線が切れている)


使い方

カレントフォルダに pinglog.txt がある状態で、
perl pinggraphout.pl
と入力する。ただし、実行するには、perlのGDモジュールが必要。

正常終了すると、pinglog.png という画像が作られる。



その他

perlについて

Windows上でperlを使いたいなら、ActivePerlが使える。
(参考ページ : 窓の杜 - ActivePerl

集計画像作成スクリプトも動かしたい場合、perlのGDモジュールが必要になる。2004/04/17現在、ActivePerl 5.6.1 にGDモジュールが用意されてることは確認できた。ActivePerl 5.8.3 にGDモジュールが用意されているかどうかは未確認。


GDモジュール導入について

Windows上でActivePerlが利用できていて、かつ、ネットに接続できる環境なら、ppmとやらで導入できる。
DOS窓を開いて、
ppm
install GD
exit
と打てばいい。


おまけ

自分は自宅サーバを設置してたりするので、ブラウザからそれら記録を見れたりすると楽だったり。なので、前述の集計画像を生成するcgi等も作成した。人によっては何かの参考になるかもしれないので、一応 zipでまとめて 置いとくであります。生成終了まで時間がかかるので、ブラウザがタイムアウトしないようにするのが面倒臭かった記憶が。使い方は…忘れた(爆) いや。たしか自宅サーバにユーザアカウントでログインして、pingchk.pl & とか打ってバックグラウンドで記録を取り続けて、後はブラウザからcgiを呼び出して画像生成・閲覧してたような。たしかそんな感じ。もちろん普通はここまでする必要はなく。ウチの場合は、リンク切れ状態を家族も確認できるようにと思ってやってただけでありますが。


▲ PC LABO Menu