Webアプリを創る

PowerShell スクリプトで VALUE-DOMAIN の DDNS を更新

2009年10月25日

Windows PowerShell スクリプトで、VALUE-DOMAIN のダイナミックDNSを更新するスクリプトを作成してみました。VALUE-DOMAIN のIPアドレス検出CGIは結構重いようなので、VALUE-DOMAINに迷惑をかけないように、外部IP アドレスを表示する PHP のプログラムも紹介しておきます。別に公開サーバーがあれば、外部IPアドレスの表示は簡単にできます。なお、VALUE-DOMAIN のDDNS の設定については、ダイナミック DNSの設定にメモをしています。

Windows PowerShell は v2 になって、下の図のように ISE(Integrated Scripting Environmentnt) がついてくるようになって、編集やデバッグも楽にできるようになっています。
始めてPowershell のスクリプトを使う場合は、TechNet の Hey, Scripting Guy が参考になります。なお、v2 では、既定ではスクリプトの実行ができません。Windows PowerShell を「管理者として実行」で起動して、Set-ExecutionPolicy RemoteSigned とコマンドレットを実行してスクリプトの実行ポリシーを変更します。

image

スクリプトが完成すると、タスクスケジューラを使用して、定期的にスクリプトを実行するようにします。
タスクスケジューラは、Windows 7/Vista では、以前のものよりかなり細かく設定ができるようになりました。以下の図のように繰り返し間隔「15分間」、継続時間「無期限」に設定すると15分おきにタスクが起動されるようになります。画面で設定できる繰り返し間隔の最小は5分間なので、今回のスクリプトの起動にも簡単に対応できます。

image

1 IPアドレスを表示するPHPプログラム

<?php
echo getenv("REMOTE_ADDR");
?>

2.VALUE-DOMAIN のダイナミックDNSを更新するスクリプトのサンプル

# ドメイン名
$DOMAIN = "example.com"
# パスワード
$PASS = "password"
# サブドメイン名 すべての場合は*
$HOSTNAME = "*"
# IP アドレスを取得するページのURL
$IP_URL = "http://mydomain.com/myipaddress.php"
# Value-Domain のDDNSサーバーの登録ページのURL
$DDNS_URL = "http://dyn.value-domain.com/cgi-bin/dyn.fcg?"
# ログファイルを保存するディレクトリ
$DATAPATH = "C:\Users\Admin\Documents\"
$IP_FILE = "wan_ip.txt"
$LOG = "log.txt"

# ログの出力
function write_log($message)
{
  $now = Get-Date;
  Add-Content ($DATAPATH + $LOG) ($now.ToString("yyyy/MM/dd HH:mm:ss") + " " + $message)
}

# 記録しているIPアドレスの取得
if (Test-Path ($DATAPATH + $IP_FILE))
{
  $old_ip = Get-Content ($DATAPATH + $IP_FILE)
}
else
{
  $old_ip = "0.0.0.0"
}
echo $old_ip

# IPアドレスの取得
$wc = New-Object System.Net.WebClient
try
{
  $new_ip = $wc.DownloadString($IP_URL)
  $wc.Close;
}
catch
{
  write_log("11:IPアドレスが取得できません。")
  try
  {
    $new_ip = $wc.DownloadString($DDNS_URL + "ip")
    $wc.Close;
  }
  catch
  {
    write_log("12:IPアドレスが取得できません。")
    echo "12:IPアドレスが取得できません。"
    return;
  }
}
echo $new_ip

if ($old_ip -eq $new_ip)
{
  write_log("00:IPアドレスの変更がありません")
  echo "00:IPアドレスの変更がありません"
}
else
{
  # アドレスが変更されている場合にVALUE-DOMAINのDDNSサーバーの更新
  $wc = New-Object System.Net.WebClient
  try
  {
    $status = $wc.DownloadString($DDNS_URL + "d=" + $DOMAIN + "&p=" + $PASS + "&h=" + $HOSTNAME)
    echo $status
  }
  catch
  {
    write_log("12:データベースサーバーに接続できません。")
  }
  $st = $status.Split("`n") 
  if ($st[0] -eq "status=0") 
  { 
    Set-Content ($DATAPATH + $IP_FILE) $new_ip 
    write_log("0:OK IP:" + $new_ip) 
  } 
  else 
  { 
    write_log($st[0] + ":" + $st[1]) 
  }
}

Windows 7 が発売されました

2009年10月24日

Windows 7 が10月22日に発売されました。評判はいいようですが、Vistaが発売されて約2年が経過して、やっとハードウェアやソフトウェアがOSに追いついたという気がします。

今週は、コレガの無線LANに悩まされていました。今まで使っていたものが故障したので新しく買ったのですが、通信が不安定で回線が切断されてしまい結局使い物にならないものでした。安かったので買ったのですが、ホームページを見ても同じような症状の故障が多いようです。安くすることを優先するため、開発や品質管理のコストを削るようになると品質が落ちるのは当然のことですね。

2009 Open Source CMS Award の投票が始まっています

2009年10月4日

今年も、英国の出版社 Packt Publishing 社主催の2009 Open Source CMS Award の選考が始まっていますが、mojoPortal は、 「その他のオープンソースCMS」部門の決勝にノミネートされています。 投票期間は10月30日までで、日頃お世話になっているCMSの開発チームに恩返ししたい方は、この機会にぜひ投票をしてください。なお、「その他のオープンソースCMS」部門で決勝にノミネートされているのは、DotNetNukedotCMSmojoPortalPloneWebGUI となっています。

mojoPortal が 2.3.1.9 にバージョンアップ

2009年10月4日

mojoPortal が2.3.1.7 にバージョンアップされています。今回のバージョンアップの概要は、以下のとおりです。

  1. HTML コンテンツに jQuery Cycle Plugin によるスライドショーの機能を追加
  2. イメージ browser/uploader で画像のトリミングの機能を追加
  3. Twitter ウィジェットを導入
  4. TinyMCE の設定をカスタマイズできるよう Config ファイル(mojoTinyMCE.config)を導入
  5. イメージギャラリーで、画像をまとめてアップロードが可能に
  6. ユーザビリティの向上

Windows 7/Vista で自宅サーバー

2009年10月2日

自宅サーバーに Windows の Internet Information Service(IIS) を使用すべきではないという意見が多いと思うのですが、それは、Windows XP までの話であって、Windows 7/Vista に付属する IIS7 は、セキュリティ面が強化され、管理機能も充実してきています。実際に触ってみれば、あまりにも違うということが実感できると思います。Windows 7/Vista に付属の IIS7 は、開発用だということで機能制限があるため、性能面では Apache と比較すると大きく劣りますが、個人や小規模な会社のウェブページであれば十分な能力を持っています。

共用サーバーであれば、数十から数百の利用者で共用していますから、それと比較すれば、1台を専用できるわけだから、能力は十分です。特に、共用サーバーでは禁止されている負荷が重い処理をしなければいけないような場合に最適です。どれだけ利用があるかわからない立ち上げの時期に、専用サーバーの費用は、負担が重すぎます。

Windows 7/Vista を使用するメリットとしては、日頃から使い慣れているPCを利用するので新たに覚えなければいけないことが、Linux を使用する場合と比較すると遙かに少なくなります。また、イントラネットでは、広く使われている ASP.NET を使うことができます。

Windows + IIS で自宅サーバーを構築した事例を紹介するホームページや書物は少ないので、その方法を紹介するページ Windows 7/Vista で自宅サーバーを作成しました。