Java経由でコマンド[nslookup]を用いて
ドメインの存在チェックを行うサンプルです。
※コマンド[nslookup]のインストールは
下記サイトをご参照ください。
nslookupとdigのインストール / CentOSメモ
コード
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Vector; public class DNSChecker { public static void main(String[] args) { String hostName1 = "www.kenmiya.info"; String hostName2 = "www.example.com"; String hostName3 = "www.google.co.jp"; String hostName4 = "www.google.com"; String hostName5 = "www.hogehoge.co.jp"; # No.01 Runtime runTime = Runtime.getRuntime(); BufferedReader bufReader; Process proc; try { # No.02 proc = runTime.exec( "nslookup " + hostName1 ); Vector<String> vec1 = new Vector<String>(); bufReader = new BufferedReader( new InputStreamReader( proc.getInputStream() ) ); System.out.println( hostName1 + "\n" ); for( String str = bufReader.readLine() ; str != null ; str = bufReader.readLine() ) { System.out.println( str ); vec1.add( str ); } System.out.println( "\n" ); # No.02 proc = runTime.exec( "nslookup " + hostName2 ); Vector<String> vec2 = new Vector<String>(); bufReader = new BufferedReader( new InputStreamReader( proc.getInputStream() ) ); System.out.println( hostName2 + "\n" ); for( String str = bufReader.readLine() ; str != null ; str = bufReader.readLine() ) { System.out.println( str ); vec2.add( str ); } System.out.println( "\n" ); # No.02 proc = runTime.exec( "nslookup " + hostName3 ); Vector<String> vec3 = new Vector<String>(); bufReader = new BufferedReader( new InputStreamReader( proc.getInputStream() ) ); System.out.println( hostName3 + "\n" ); for( String str = bufReader.readLine() ; str != null ; str = bufReader.readLine() ) { System.out.println( str ); vec3.add( str ); } System.out.println( "\n" ); # No.02 proc = runTime.exec( "nslookup " + hostName4 ); Vector<String> vec4 = new Vector<String>(); bufReader = new BufferedReader( new InputStreamReader( proc.getInputStream() ) ); System.out.println( hostName4 + "\n" ); for( String str = bufReader.readLine() ; str != null ; str = bufReader.readLine() ) { System.out.println( str ); vec4.add( str ); } System.out.println( "\n" ); # No.02 proc = runTime.exec( "nslookup " + hostName5 ); Vector<String> vec5 = new Vector<String>(); bufReader = new BufferedReader( new InputStreamReader( proc.getInputStream() ) ); System.out.println( hostName5 + "\n" ); for( String str = bufReader.readLine() ; str != null ; str = bufReader.readLine() ) { System.out.println( str ); vec5.add( str ); } } catch (IOException e) { e.printStackTrace(); } } }
解説
コマンド[nslookup]はDNSの設定を確認するコマンドです。
存在しないコマンド実行引数にドメイン名を取得することで
DNSの設定を確認することができます。
# No. 01
現在Javaが実行されているRunTime情報を取得します。
コマンド[nslookup]を実行するのは取得したRunTime上で行います。
# No. 02
変数[proc]にNo.01で取得したRunTime上で実行した
コマンドの返り値を代入します。
存在しないドメインを指定した場合は
[ NXDOMAIN]という文字列が返ってくるので
それをもとにドメインの存在を確認できます。
※今回の場合は変数[hostName5]のみが
その値を返します。