' ' DDNS更新ページをリクエストし、 ' IPアドレスに変更があった場合、ログ&メールするスクリプト ' ' author Jomora(http://jomora.bne.jp/) ' version 2005.06.05 作成 ' version 2005.06.21 ServerXMLHTTPに変更、setTimeoutsを追加 url = "http://ddns.j-speed.net/quickUpdate.jsp?uparams=server,********,name.jp,********" 'J-SpeedのDDNS更新ページ mail_addr = "mail@address" '連絡先メールアドレス mail_srv = "smtp.server" 'SMTPサーバ '**Start Encode** '一時ファイル名の生成 Set objFs = WScript.CreateObject("Scripting.FileSystemObject") tempFileName = objFs.GetTempName 'DDNS更新ページを一時ファイルとしてバイナリ形式でダウンロード 'Set objHTTP = WScript.CreateObject("Microsoft.XMLHTTP") Set objHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP") 'Set objHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP.4.0") objHTTP.Open "GET", url, False objHTTP.setTimeouts 3000, 3000, 3000, 5000 'ServerXMLHTTP利用時 objHTTP.Send Set stream = WScript.CreateObject("Adodb.Stream") stream.Type = 1 'adTypeBinary=1, adTypeText=2 stream.Open stream.Write objHTTP.responseBody stream.Savetofile tempFileName, 2 'adSaveCreateNotExist=1, adSaveCreateOverWrite=2 stream.Close '一時ファイルをテキスト読み込み、行検索 Set tempFile = objFs.OpenTextFile(tempFileName) Set regEx = New RegExp regEx.Pattern = "IPアドレスを " log_message = "" Do Until tempFile.AtEndOfStream tempLine = tempFile.ReadLine If regEx.Test(tempLine) Then log_message = tempLine Exit Do End If Loop tempFile.Close 'IPアドレスに更新があった場合通知 If log_message <> "" Then Call PrintLog(log_message) End If '一時ファイルの削除 objFs.DeleteFile tempFileName ' ログ出力関数 Sub PrintLog(message) 'WScript.Echo message 'イベントログに記録 Set objShell = CreateObject("WScript.Shell") Call objShell.LogEvent(0, message) 'メール送信 Set oMsg = CreateObject("CDO.Message") oMsg.From = mail_addr oMsg.To = mail_addr oMsg.Subject = "[DDNS] IPアドレスが更新されました。" oMsg.TextBody = message & vbCrLf oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mail_srv oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oMsg.Configuration.Fields.Update oMsg.Send End Sub