import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Vector;
public class IpToDomainNslookup {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
try
{
// 입력 파일의 내용 형식 : xxx.xxx.xxx.xxx(소스 아이피) , xxx.xxx.xxx.xxx(목적지 아이피)
// 결과 파일의 내용 형식(도메인이 있는 경우) : source IP : xxx.xxx.xxx.xxx(소스 아이피) 목적지 IP: xxx.xxx.xxx.xxx(목적지 아이피) Domain:www.site.com
// 결과 파일의 내용 형식(도메인이 없는 경우) : source IP : xxx.xxx.xxx.xxx(소스 아이피) 목적지 IP: xxx.xxx.xxx.xxx(목적지 아이피)
IpToDomainNslookup ipToDomainNslookup = new IpToDomainNslookup();
String readFileName = "D:\\Documents\\Tools\\Tmp\\eclipse\\workspaces\\Email\\src\\org\\https\\url\\readFileName.txt";
String writeFileName = "D:\\Documents\\Tools\\Tmp\\eclipse\\workspaces\\Email\\src\\org\\https\\url\\writeFileName.txt";
ipToDomainNslookup.runProcess(readFileName,writeFileName);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//파일의 내용을 읽어들이는 기능을 제공
BufferedReader bufferedReaderFromFile = null;
//읽어들이기위한 파일을 연결
InputStream inputStream = null;
//읽고쓰기위한 파일을 연결하는 기능
private void setInitRead(String readFileName,String writeFileName) throws IOException
{
File file = new File(readFileName) ;
inputStream = new FileInputStream(file);
bufferedReaderFromFile = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
//파일을 쓰기위한 내용
file = new File(writeFileName) ;
outputStream = new FileOutputStream(file);
}
//사용한 파일자원을 반납하는 기능
private void close() throws IOException
{
//읽기
if(bufferedReaderFromFile!=null)
{
bufferedReaderFromFile.close();
bufferedReaderFromFile=null;
}
//파일내용을 읽기위해서 파일과 연결
if(inputStream!=null)
{
inputStream.close();
inputStream=null;
}
//프로세스에서 결과를 읽어오는 기능
if(bufferedReaderProcess!=null)
{
bufferedReaderProcess.close();
bufferedReaderProcess=null;
}
//결과를저장하는기능
if(outputStream!=null)
{
outputStream.close();
outputStream=null;
}
}
//파일을 열어서 읽어들이는 기능
private String getFileContext() throws IOException
{
return bufferedReaderFromFile.readLine();
}
//결과를기록
OutputStream outputStream = null;
//프로세스에서 nslookup 실행 결과를 읽어들이기
BufferedReader bufferedReaderProcess = null;
public void runProcess(String readFileName,String writeFileName) throws IOException
{
//file encoding utf-8 로 변경
System.setProperty("file.encoding","utf-8");
//변경한 내용확인
System.out.println(System.getProperty("file.encoding"));
//Runtime Object 생성
Runtime runtime = Runtime.getRuntime();
//실행 결과 확인을 위한 Object
Process process ;
int index=0;
try
{
//파일 읽어오기 위해서 초기화 와 결과를 쓰기위한 초기화
setInitRead( readFileName, writeFileName);
//내용저장하기위한 분기처리를 하기위하여 선언
boolean bool=false;
String string="";
String[] strSplite;
String strRead = "";
String tmp = "";
//파일에서 데이터를 읽어오는 기능
while((string =getFileContext())!=null)
{
//소스 서버 IP , nslookup 목적지 서버 IP 의 형식으로 string에 입력되어 , 구분자를 이용해서 데이터를 나누는 기능
strSplite = string.split(",");
//명령어 실행
process = runtime.exec("nslookup " + strSplite[1]);
//windows 실행결과 한글 깨짐방지 EUC-KR
bufferedReaderProcess = new BufferedReader(new InputStreamReader(process.getInputStream(),"EUC-KR"));
strRead = "";
tmp = "";
outputStream.write( ("source IP : " + strSplite[0] + "\t").getBytes());
outputStream.write( ("목적지 IP : " + strSplite[1].replace("nslookup", "").trim()).getBytes());
//외부명령어 결과를 읽어들이는 기능을 하는 명령어
while((strRead = bufferedReaderProcess.readLine()) !=null)
{
if(strRead.contains("이름:"))
{
tmp = strRead.replace("이름:", "\t Domain:");
outputStream.write(tmp.getBytes());
break;
}
strRead = "";
}//while((strRead = bufferedReaderProcess.readLine()) !=null)
outputStream.write("\n".getBytes());
System.out.println(index++);
}//while((string =getFileContext())!=null)
}
catch(IOException e)
{
System.out.println(e.toString());
e.printStackTrace();
throw e;
}
finally
{
close();
}
}
}
댓글 영역