ブログ移転のお知らせ

独自ドメインのVPSにブログ移転中です、ここもデータの保証無しってことで置きっぱなしにしてもらえる事になってます。
 
i移転先予定のブログURLはこちら(作成中):http://www.sawanoboly.net/wp/
旧ブログはこちらでも保管しときます:http://www.sawanoboly.net/wp_old/
前の記事:«
次の記事: »

PowerShellでDDNSサービスを更新(1) の続き。
ddo.jp に対してPowerShell で更新をかけようというもの。
 

IPアドレスが更新されているかチェック

毎回更新していると相手さんに負荷がかかるので、IPアドレスが登録時のものと変わっているかチェックする。
 
IPアドレスをゲットして、ローカルにおいたテキストに保存しつつ更新というシナリオ。
 

"get_ipandtest.ps1" というスクリプトを作成。

# 引数格納、URL形式
param([string]$url)

# IPアドレスの書式を正規表現で定義しておく
$IPFmt = "^(25[0-5]|(2[0-4]|1[0-9]|[1-9])?[0-9]\.){3}(25[0-5]|(2[0-4]|1[0-9]|[1-9])?[0-9])$"

# 途中で例外を吐いたらここに飛び、抜ける
trap [Exception] {
 	echo $error[0].exception
 	break
}

# テキストファイルに保存していたIPアドレスを取得
# なかったら0.0.0.0 などを突っ込む
if (Test-Path myAdd.txt) {
	$testIP = Get-Content myAdd.txt -TotalCount 1 -encoding UTF8
} else {
$testIP = "0.0.0.0"
}

# テストIPのチェック用
echo $testIP

# .NetFramework の WebClient クラスを拝借
$webCli = New-Object System.Net.WebClient

# コンテンツを取得
$body = $webCli.DownloadString($url)

# 改行を消しちゃう
$body = $body -replace "`n", ""

# コロン区切りで配列に格納、DDOでは2つ目がIPアドレス
$ip = $body.split(":")

# IPアドレスの書式をチェック
if ($ip[1] -match $IPFmt) {
	echo "IPアドレス ゲット成功デース"
} else {
	Write-Output "ゲットシタモノハ IPアドレスデハ アリマセーン"
	break
}

echo $ip[1]

# グローバルIPアドレスが変わったかどうかチェック
if ($ip[1] -eq $testIP) {
	echo "IPアドレスハ カワッテマセーン"
} else {
	Write-Output "IPアドレス カワッテマス、テキスト更新シマース"
	$ip[1] | Out-File myAdd.txt -encoding UTF8
}

echo と Write-Output が混ざっているのには特に意味はなく、両方できるんだなーというのを試している。
 
 

動作させてみる

初回動作では myAdd.txt がないので、0.0.0.0 を相手に比較。
 
 

PS > ./get_ipandtest.ps1 http://info.ddo.jp/remote_addr.php
0.0.0.0
IPアドレス ゲット成功デース
125.4.***.***
IPアドレス カワッテマス、テキスト更新シマース

 

2回目の動作では、myAdd.txt があるのでそれと比較してグローバルIPが変わっているかチェックさせる。

PS > ./get_ipandtest.ps1 http://info.ddo.jp/remote_addr.php
125.4.***.***
IPアドレス ゲット成功デース
125.4.***.***
IPアドレスハ カワッテマセーン

 

あとは クエリストリングつけて、HTTP で GET をするだけだ。
さらにつづく。

前の記事:«
次の記事: »
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

使ってる所とか

※注意

I
KOBE×
BUSINESS.

これは個人ブログです、内容についてアイクラフト(株)は責任を負いません。
にほんブログ村 IT技術ブログへSawanoblogのフィード
人気ブログランキングへ
この日記のはてなブックマーク数
はてなRSSに追加
Googleに追加
My Yahoo!に追加
livedoor Readerに追加
goo RSSリーダーに追加
フィードメーター - SawanoBlog.
MCP
MCTS
CCNA

ミニブログとか

あわせて読みたいブログパーツ
  • Windows、VBScriptでYYYYMMDD
    画像:スクリプトの実行結果


    エイサー Aspire one のACアダプタを”ちょっとだけ”改良する
    写真:使用前、重さ


    SNIA-Jのストレージ技術セミナー(新大阪)に行ってきた
    写真:SNIAセミナー関連資料


    FireFox を別プロセスで立ち上げる、プロファイル切り替え必須
    画像:複数起動したFirefox


    GNU screen で仮想端末。処理をほったらかしにして切断、さあ帰ろう
    画像:デタッチ前の状況が保たれている


    Googleのページランク ”1” がついた
    画像:その時のSEOSTATS
  • Amazon用