[Java]ドメイン存在チェック

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]のみが
その値を返します。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)