' *********************************************************************** ' ' NetSHAKER ' ' Copyright(C) 2009 YASKAWA INFORMATION SYSTEMS Corporation ' All Rights Reserved. ' ' **************************************************************************** ' NetSHAKER Red-Mail現地確認ツール main ' ==========+===========================================+========+=========== ' DATE | Comments |Revision| SIGN ' ==========+===========================================+========+=========== ' 2009/09/09| NSK51+ScoolOffice | New |Miura ' ----------+-------------------------------------------+--------+----------- ' 2009/xx/xx| | | ' ----------+-------------------------------------------+--------+----------- ' ' 概要 ' 引数で指定されたDNSサーバを使用して、名前解決を行う ' nslookupの実行結果に従い、成否判定を返す。 ' ' 引数 ' 0 : DNSサーバアドレス ' 1 : 名前解決するFQDN ' 2 : 引数(1)を解決し、得られるはずのIPアドレス【省略可】 ' ' 戻り値 ' 0 : 名前解決成功 ' 1 : 名前解決失敗 ' ' 注意 ' ' ---------------------------------------------------------------------------- ' ============================================================================ ' 定義 ' ============================================================================ Dim strDnsServer rem DNSサーバ入力 Dim strServer rem 解決したいFQDN Dim strAddress rem 得られるはずのIPアドレス Dim strMatchName rem 名前解決成否判定用文字列1 Dim strName rem 名前解決成否判定用文字列1 strName = "Name:" ' ============================================================================ ' 宣言 ' ============================================================================ Dim return rem 戻り値 Dim result rem nslookup 実行結果 Dim strSplit rem Name以降の文字列 ' ============================================================================ ' 引数チェック ' ============================================================================ rem 引数を取得 If WScript.Arguments.count > 1 Then strDnsServer = Trim(WScript.Arguments.Item(0)) strServer = Trim(WScript.Arguments.Item(1)) Else WScript.StdOut.WriteLine "引数が正しくありません。" WScript.Quit 1 End If If WScript.Arguments.count > 2 Then strAddress = Trim(WScript.Arguments.Item(2)) Else strAddress = "" End If ' ============================================================================ ' メイン処理 ' ============================================================================ rem 名前解決成否判定 Set objShell = CreateObject("WScript.Shell") rem nslookup実行 Set objExec = objShell.Exec("cmd /c nslookup " & strServer & " " & strDnsServer) Do While objExec.Status = 0 WScript.Sleep 100 Loop rem 実行結果 strOutput = objExec.StdOut.ReadAll rem 実行結果チェック arrLines = Split(strOutput, VbCrLf) strMatchName = "NOT FOUND" For Each strLine In arrLines If Left(strLine, 6) = "Name: " Then strMatchName = "Resolv OK" Next If strmatchName = "Resolv OK" Then rem 名前解決できた場合 If strAddress <> "" Then rem Name以降の文字列を抜き出し strSplit = Mid(strOutput, InStr(strOutput, strName)) rem 出力結果判定 If InStrRev(strSplit, strAddress) > 0 Then result = "OK" return = 0 Else result = "NG" return = 1 End If Else result = "OK" return = 0 End If Else result = "NG" return = 1 End If rem 実行結果出力 WScript.StdOut.WriteLine "exec command : " & WScript.ScriptName & " " & strDnsServer & " " & strServer & " " & strAddress WScript.StdOut.WriteLine "exec result : " & result WScript.StdOut.WriteLine "exec out:---------------------------------------->" WScript.StdOut.WriteLine strOutput WScript.StdOut.WriteLine "exec out:<----------------------------------------" rem 戻り値 WScript.Quit return