JAVA에서 쉘프로그램 실행시키기


public int getExecuteCommand(String fileName) throws Exception {


  int result = 0;


//UNIX 명령어 저장할 String 배열 선언

  String[] exec = new String[3];


//Runtime 객체 생성
  Runtime r = Runtime.getRuntime();


/* IP 받아오기

- Shell 파일이

test_110.sh,

test_111.sh

두 개가 있는데 서버의 IP 맨 뒷자리 3글자로 구분지어서 실행 시켜주려고 그랬다.

*/

  InetAddress address = InetAddress.getLocalHost();
  String myIp = address.getHostAddress();
  myIp = myIp.substring(myIp.lastIndexOf(".")+1, myIp.length());
 
  exec[0] = "/bin/sh";//정확히는 모르겠지만 Shell 파일 구동 전 써주는 것 같다.
  exec[1] = "/home/";//Shell 파일 위치 절대경로 입력
  exec[1] += "test_"+myIp+".sh";//Shell 파일명
  exec[2] = fileName;//전송할 파일명
 

  InputStream inputStream = null;
  BufferedReader bufferedReader = null;
 
  try{
    Process process = r.exec(exec);//참고사항 : Process 선언 안하고 r.exec() 만 하면 실행되지 않는다.


//참고사항 : 이 부분을 안해주면 Shell 구동이 안된다.
    process.getInputStream();
   
    inputStream = process.getInputStream() ;
    bufferedReader = new BufferedReader( new InputStreamReader( inputStream ) ) ;

    while(true) {
     String info = bufferedReader.readLine() ;
     if( info == null || info.equals( "" ) ){
      break ;
     }
     logger.info( info ) ;
    }
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   try{if(inputStream!=null)inputStream.close();}catch(Exception e){}
   try{if(bufferedReader!=null)bufferedReader.close();}catch(Exception e){}
  } 
  return result;
 }


[출처] Java에서 UNIX Shell 프로그램 실행하기|작성자 현수림

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

오늘 나간 사이트에서 주기적으로 실행되는 쉘이 있었다.

그 쉘 안에는 디비 계정에 관련된 정보가 담겨져 있었고, 고객사에서는 디비 계정을 암호화 시켜줄 것을 요청하였다.

처음에는 쉘의 내용을 java 로 다시 짜야하나?? 라는 생각을 하다가 문득, java 자체에서 쉘 스크립트를 실행시킬 수 없을까? 라는 생각이 들었다.

암호화된 계정정보를 properties 파일에 넣고 해당 정보를 읽어 복호화하여 java 파일내에서 쉘 스크립트를 실행하면 간단히 해결될 것 같았다.

역시나, 구글링은 많은 정보를 준다. ^^;

java.lang 패키지에 있는 Runtime 을 사용하면 간단하게 쉘 스크립트를 실행할 수 있다.


public class Test{
        public static void main(String[] args){
                String[] command = {"/bin/sh","-c","실행시킬 쉘 스크립트"};
                int i;
                try{
                        Process ps = Runtime.getRuntime().exec(command);
                        ps.waitFor();
                        System.out.println(ps.exitValue());
                        ps.destroy();
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
}

 

위의 코드중에 볼드로 표현된 배열부분중에 앞의 두곳이 중요하다. 저 부분이 빠지고 그냥 쉘 스크립트만 실행을 하면 제대로 동작을 하지 않는다.

윈도우에서는 별 문제없이 동작하는 것 같다. ㅎㅎ

 

 

[출처] http://imnuz.net/entry/JAVA%BF%A1%BC%AD-%BD%A9%C7%C1%B7%CE%B1%D7%B7%A5-%BD%C7%C7%E0%BD%C3%C5%B0%B1%E2

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED