태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2008.11.09 20:33

Ssh방식으로 리눅스에 접속하는 Java프로그램..

● 회사 업무중 월마다 각 서버의 로그를 통계내어 엑셀파일로 만드는 다음과 같은 업무가 있었습니다.
  1. 3대의 서버에 접속하여 log파일중 특정 단어가 나오는 횟수를 일자별로 체크하여 텍스트파일로 생성
  2. 3대의 서버에서 만든 텍스트파일을 다운받아 엑셀파일로 만든다.

● 월마다 생기는 이슈지만 매번 일일히 하는게 좀 귀찮아서 자동 프로그램을 다음과 같이 만들어보았습니다.
  1. 각 서버에 접속하여 특정한 리눅스 명령어를 실행시켜 텍스트 파일을 특정 위치에 생성한다.
  2. 생성한 파일을 FTP를 이용하여 다운로드.
  3. 다운로드한 텍스트파일을 분석하여 엑셀파일 생성.
● 위 프로그램을 만들려면 3가지의 기능이 필요합니다.
  1. 리눅스명령어를 내리는 기능
  2. FTP다운로드하는 기능
  3. 엑셀 만드는 기능

이 중 리눅스에 접속하여 리눅스 명령어를 실행시켜주는 프로그램을 소개해드리겠습니다.

먼저 Ssh를 이용하여 접속하는 라이브러리를 아래에서 받아야 합니다.
http://sourceforge.net/projects/sshtools/

위에서 파일을 다운로드받고 ANT빌드를 이용하여 라이브러리를 생성해야하기 때문에 생성한 라이브러리 파일을 압축해서 올립니다.



홈페이지에서 제공하는 튜토리얼은 PUTTY 프로그램같은 접속 클라이언트처럼 프로그램이 실행되면 System.in을 이용하여 직접 명령어를 치는 형식으로 나와있는 것 밖에 없었습니다.

그래서 자동으로 접속 후 명령어를 실행하고, 접속해제를 하는 프로그램을 만들어봤습니다.



● 사용법은 다음과 같습니다.
  1. 새 프로젝트를 만들어 위 SshClient.jar 파일을 다운로드받아 라이브러리에 추가한다.
  2. 위 lib.zip 파일을 다운로드받아 압축을 풀고 해당 jar파일을 라이브러리에 추가한다.
  3. 새 클래스파일을 만들고 다음과 같이 코딩한다.

         SshClientModule client = new SshClientModule("접속주소", "ID", "비밀번호");
        client.connect();
        StringBuffer shell = new StringBuffer("ls -al \n");
        shell.append("cd tomcat/bin \n");
        shell.append("ls -al \n");
        client.executeShell(shell.toString());
        client.disconnect();


.. 참 쉽죠? 궁금한게 있으시면 글 남겨주세요 ^^;

Ssh를 이용한 FTP다운로드와, POI를 이용한 엑셀파일 만들기는 곧 올리겠습니다.

* 2009.09.03 에 포트설정부분 추가하였습니다.

         SshClientModule client = new SshClientModule("접속주소", "ID", "비밀번호");
        client.setPort(포트번호);    //수정된부분
        client.connect();
        StringBuffer shell = new StringBuffer("ls -al \n");
        shell.append("cd tomcat/bin \n");
        shell.append("ls -al \n");
        client.executeShell(shell.toString());
        client.disconnect();




저작자 표시 비영리 변경 금지
신고
Trackback 3 Comment 13