自動更新するには


2.IPアドレスの自動更新スクリプト (更新日:2001/12/29)
しかし、ここで問題があります。
今のままでは、回線が切断されたことがわかっていれば手動で対応できますが、やはり回線が切断され割り当てられたIPアドレスが変更となっとことを自動的に認識し、そして自動的に「 HN.ORG 」のサイトでIPアドレスの変更処理を行うようにしなければ、せっかくの機能を生かしきったことにはなりません。

ありがたいことに「 HN.ORG 」のサイトで自動更新スクリプトをダウンロードすることができます。 ( http://hn.org/downloads/clients/ )
それが、この「 hammernode.pl 」です。(← クリックすると開きます。)
拡張子が示すとおり perl で書かれたスクリプトですので、分かる方には分かる内容だと思います。(~_~;)
使用するには、適当なエディタで開いて、自分のユーザー名とパスワードを書き込むことが必要です。

ただ、このスクリプトにも問題があります。
それは、
次の2点です。
(1)自動的にIPアドレスが取得できないようなので、スクリプト内の「$myip」という変数にあらかじめ書き込んでおかなければならない。
(2)そもそも、サーバのIPアドレスに変更があったかどうかがわからない。

(追記):当サイトではADSLにPPPoAで接続しているため、IPアドレスが自動的に取得できないようです。
     NTTのフレッツADSL等のPPPoEで接続している場合には、自動的に取得できると思います。

しかし、この2つの問題点を解決するのもそう難しくはありません。
何らかの方法で、現在割り当てられているIPアドレスを取得し、そのIPアドレスに変更があるかどうかをチェックし、変更があった場合に新しいIPアドレスを「$myip」にセットして実行するよう「hammernode.pl」を修正してやればよいのです。

ここで、現在自分に割り当てられているIPアドレスを調べる方法として2つの方法があります。
一つ目は、ISDNで接続していたときから使っていた方法ですが、ADSLモデムにアクセスし、そこからIPアドレスを取り出してくる、という方法です。
もう一つの方法は、hn.org のサイトの myip.hn.org/ip.cgi にアクセスし、ここで表示されるIPアドレスを取り出す、という方法です。

1番目のADSLモデムから取得する方法では、モデムの機種毎にtelnetでアクセスしたり、Webベースでアクセスしたりと自動接続スクリプトの内容を修正しなければなりません。
当サイトでも1.5MのADSLから8MのADSLに変更した際にモデムが変更となり、新しい8M用のモデムからIPアドレスが取得できなくなってしまいました。
単に取得するperlのルーチンを作る能力がなかっただけですが。。。(^^ゞ 

しかし、hn.org の myip.org/ip.cgi を使えばモデムの機種に関係なく、自分に割り当てられたIPアドレスを取得できます。
どちらの方法が汎用性が高いかは明らかですね。(~_~)

ということで、今までは1番目のADSLモデムからIPアドレスを取得する方法のスクリプトを公開していましたが、今回 myip.hn.org/ip.cgi にアクセスし取得したIPアドレスを利用するスクリプトを公開いたします。

   1.ADSLからIPアドレスを取得する方法(以前の方法)
      「adsl-hammernode.pl
(← クリックすると全文を表示します。)

   2.myip.hn.org/ip.cgiからIPアドレスを取得する方法
      「myip-hammernode.pl 」 (← クリックすると全文を表示します。)
なお、これらのスクリプトでは perl の「 LWP::UserAgent 」、「 MIME::Base64 」というモジュールを使うのですが、Red Hat Linux 7.1Jではインストールされていません。
このインストールにかなり嵌りました。(-_-) 
RPMパッケージを探し、実際に動いたときには夜中にもかかわらず、部屋の中で思わず拍手をしてしまいました。(~_~;)
ちなみに、RPMパッケージは「 About Rpmfind.Net Server 」のサイトからダウンロードできます。

それと、オリジナルの「 hammernode.pl 」と根本的に変えている点が1点あります。
それは、ログの出力先です。
オリジナルの「 hammernode.pl 」では、「 /var/log/message 」にログを出力していますが、私の作成したスクリプトでは「 /var/log/hammernode.log 」に出力させています。
ですから、
  # touch /var/log/hammernode.log
のコマンドで空の「 hammernode.log 」を作成しておいてください。
そして、/etc/logrotate.conf の一番最後に次の4行を追加し、ログのローテーションを行うようにしまししょう。
  /var/log/hammernode.log {
     weekly
     create 0644 root root
     rotate 4 }

正直言って perl については(も ^_^; )、あまり詳しく知りません。
このスクリプトもあちこちのサイトを参考にさせてもらい、なんとか作ることが出来ました。
自分で作成したルーチンは非常に少なく、はっきり言って美しくないです。
それでも、なんとか目的を達成できているので良しとしていますので、悪しからず。(~_~;)。

back HOME