# ======================== # e:\sharing\get_ip.ps1 # ======================== # 接続先URL $url = "http://www.axisnetworks.biz/tools/gip/" Write-Output "接続先: $url" # メール送信先アドレス $from = "name@provider.com" $to = "name@provider.com" $myhost = "provider.com" $username = "username" $password = "password" # ファイル名の設定(ファイルはスクリプトと同じディレクトリが対象になる) $filename = "get_ip.txt" $logfilename = "get_ip_log.txt" # スクリプトのフォルダー名 $path = Split-Path $MyInvocation.MyCommand.Path -Parent # 保存用ファイル名 $file = Join-Path $path $filename $logfile = Join-Path $path $logfilename # 開始 $datetime1 = Get-Date -Format "yyyy-MM-dd HH:mm:ss" Write-Output "処理開始: $datetime1" > $logfile # ファイル存在を判定し、ファイルがあれば前回値を読込 If (Test-Path $file) { $old_address = Get-Content $file } else { $old_address = "<記録なし>" } # サイトにアクセスしてレスポンスを取得 $req = [System.Net.WebRequest]::Create($url) $req.Method=”GET” $resp=$req.GetResponse() # レスポンスの読込み $encode = $resp.ContentEncoding $sr = New-Object IO.StreamReader($resp.GetResponseStream(), $resp.ContentEncoding) # 最終行まで実行 while ( ($line = $sr.ReadLine()) -ne $null ) { # 1行読み込み $line = $sr.ReadLine() # ソースの表示を行うと、下記の行が表示される #

111.64.65.45 # 該当行の判定 if ($line -like '*

*') { # アドレス行の判定 if ($line -match "(?

[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)") { # 新アドレスの取得 $new_address = $matches.address # 情報 if ($old_address -eq $new_address) { Write-Output "IPアドレスは同じ: $old_address == $new_address" >> $logfile } else { Write-Output "IPアドレスが変更: $old_address -> $new_address" >> $logfile } # ファイル上書き Write-Output "ファイル更新: $file" >> $logfile $matches.address | Out-File -FilePath $file # メール設定(Subject のエンコード指定は不要) $mail = New-Object Net.Mail.MailMessage($from, $to) if ($old_address -eq $new_address) { $mail.Subject = "IPアドレスは同じ: $old_address == $new_address" $mail.Body = "IPアドレスは同じ: $old_address == $new_address" } else { $mail.Subject = "IPアドレスが変更: $old_address -> $new_address" $mail.Body = "IPアドレスが変更: $old_address -> $new_address" } $mail.BodyEncoding = [Text.Encoding]::GetEncoding("ISO-2022-JP") # $mail.SubjectEncoding = [Text.Encoding]::GetEncoding("ISO-2022-JP") # SMTP設定(ポートは不要) $sc = New-Object Net.Mail.SmtpClient($myhost) $sc.EnableSsl = $false $sc.Credentials = New-Object Net.NetworkCredential($username, $password)  # メール送信 if ($old_address -eq $new_address) { # 同じ場合に送信が不要なら以下の2行は不要 Write-Output "メール送信: $to" >> $logfile $sc.Send($mail) } else { Write-Output "メール送信: $to" >> $logfile $sc.Send($mail) } # 破棄 $mail.Dispose() $sc.Dispose() } } } # 破棄 $sr.Close() $resp.Close() # 完了 $datetime2 = Get-Date -Format "yyyy-MM-dd HH:mm:ss" Write-Output "処理完了: $datetime2" >> $logfile