ieServerでDDNSをはじめました

遅ればせながら、DDNSをやってみましたので、その覚え書きです。

1)ieServerにDDNSを登録する。

https://ieserver.net にアクセスして、「新規ユーザー登録」を行う。
ieserver_net_-_GunDIP2
特に迷う事はないですね。適当に決めます。
登録後、暫く待たないと、DNS名でアクセスできません。

2)DDNSでの動作確認。

そのままパソコンからでは、動作確認出来ないので、iPhoneとかの別回線からアクセスしてみます。

3)IPアドレスの自動更新設定。

私はMacなので、DiCE等が使えませんので、perlスクリプトをlaunchdに登録して使ってみます。

参考サイト:http://mizusawa.dip.jp/~mizusawa/G3web/blogcgi/macintosh/875.html

http://loumo.jp/wp/archive/20140411120647/

まずは、perlスクリプトの準備、

</p>
<p>#!/usr/bin/perl -w</p>
<p># ieserverを更新するためのスクリプト<br />
# 参考 「Perl/Webアクセス - Ebisawa's Wiki」http://www.ebisawa.co.jp/wiki/index.php?Perl%2FWeb%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9</p>
<p># 変数の設定<br />
my $username = "xxxxxx" ; # ユーザーネーム<br />
my $userpassword = "xxxxxx" ; # パスワード<br />
my $domain = "dip.jp" ; # ieserverにセットするドメイン"myhome.cx" "or.cf" "jpn.ph" "fam.cx" "dip.jp" の5種類から選択<br />
my $filedir = "/Users/xxxxxx/Desktop/" ;# ファイルを書き出すディレクトリ。空だと書き出さない。ファイル名は「ieserver_update.html」</p>
<p># モジュールの宣言<br />
use strict;<br />
use LWP::UserAgent;<br />
use HTTP::Request::Common( "GET" ); # GETメソッドで送信する</p>
<p>print "==================UPDATE BEGIN=================\n"; # 処理の始まりを表示</p>
<p>my $ua = new LWP::UserAgent; # インスタンスの生成<br />
$ua->timeout( 10 ); # 10秒でタイムアウト</p>
<p>my $req = GET( "http://ieserver.net/cgi-bin/dip.cgi?username=${username}&password=${userpassword}&domain=${domain}&updatehost=Go" ); # 更新用URLに投げる<br />
my $res = $ua->request( $req ); # htmlの受取</p>
<p># ドメイン名:xxxxx.xxx.jpのIPアドレスは現在xxx.xxx.xxx.xxxに設定されています。(20xx-xx-xx xx:xx:xx 更新) だけ取り出したいところ<br />
my $kekka = $res->as_string; # 文字列に変換<br />
print "$kekka\n"; # 結果表示</p>
<p># ファイルとして保存する<br />
if ($filedir ne ""){ # 空でなければ書き出し処理<br />
my $filename = "${filedir}ieserver_update.html";<br />
&write_file($filename,$kekka,0);<br />
}</p>
<p>print "==================UPDATE END=================\n";</p>
<p>exit;</p>
<p># ===================================<br />
# ファイルの書き出し<br />
# &write_file(ファイル名,内容,モード); のように呼び出す。<br />
# モードは0で上書き、1で追記<br />
sub write_file {<br />
my $filename = $_[0];<br />
my $content = $_[1];<br />
my $mode = $_[2];<br />
# 書き込みファイルのオープン<br />
if ($mode eq "0") { # 上書き<br />
open (FILE,">$filename")|| die "ファイル「$filename」に出力できません";<br />
} else {<br />
if ($mode eq "1") { # 追記<br />
open (FILE,">>$filename")|| die "ファイル「$filename」に出力できません";<br />
}<br />
}<br />
print (FILE "$content") ; # ファイルに出力<br />
#ファイルのクローズ<br />
close (FILE) ;<br />
}</p>
<p>

この内容をコピペして、xxxxxxを自分で登録したものに置き換え、ieServerIpUpdate.pl等で保存する。

保存先は適当。とりあえず、ユーザーディレクトリ配下にbatchと作って保存。

次に、launchdへの登録。

</p>
<p><?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><br />
    <key>Label</key><br />
    <string>ieServerUpdate</string><br />
    <key>ProgramArguments</key><br />
    <array><br />
        <string>/usr/bin/perl</string><br />
        <string>/Users/xxxxxx/batch/ieServerIpUpdate.pl</string><br />
    </array><br />
    <key>LowPriorityIO</key><br />
    <true/>
    <key>Nice</key><br />
    <integer>1</integer><br />
    <key>StartInterval</key><br />
    <integer>3600</integer><br />
    </dict>
</plist>
<p>

xxxxxxを保存したユーザーに変更すれば、1時間毎に動作するファイルが出来るはず。

これを、ターミナルから

<br />
cd ~/batch<br />
launchctl load ./ieServerIpUpdate.plist<br />
launchctl list |grep ieServerIpUpdate<br />
- 0 ieServerIpUpdate<br />

で、登録完了。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする