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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
18 [java 인공지능] Spring AI 로 ChatGPT API 만들기 졸리운_곰 2024.12.30 214
17 [java 인공지능] 오라클, 자바 머신러닝 라이브러리 ‘트리뷰오’ 오픈소스로 공개 졸리운_곰 2023.08.27 296
16 [java 인공지능] 자바를 위한 머신 러닝 라이브러리 졸리운_곰 2023.08.27 360
15 [Java 인공지능] 오라클, 자바 머신러닝 라이브러리 ‘트리뷰오’ 오픈소스로 공개 file 졸리운_곰 2023.08.13 358
14 [java 인공지능] [java] 라이프 게임 (life game) file 졸리운_곰 2021.10.19 340
13 How to use Weka in your Java code 졸리운_곰 2020.02.01 307
12 weka and java eclipse example : A Simple Machine Learning Example in Java file 졸리운_곰 2020.01.31 364
11 머신러닝? weka file 졸리운_곰 2020.01.31 357
10 [Weka] Weka를 이용한 Iris 데이터 머신러닝 file 졸리운_곰 2020.01.30 364
9 [강좌] WEKA 사용법 (간단한 분류, 의사결정트리 분석 설명) file 졸리운_곰 2020.01.30 343
8 [JESS] Jess , 이클립스 연동 file 졸리운_곰 2019.12.22 216
7 Jess 간단한 문법 요약 졸리운_곰 2019.12.22 277
6 Jess 6.1 다운로드 friedman-hill_src_1_jess_se file 졸리운_곰 2019.12.22 184
5 java artificial intelligence Rule Engine Jess Working Memory 졸리운_곰 2019.12.22 300
4 Defining Functions in Jess 졸리운_곰 2019.12.22 389
3 Jess Language Basics 졸리운_곰 2019.12.22 274
2 Embedding Jess in a Java Application 졸리운_곰 2019.12.22 299
1 다섯개의 탑 자바로 머신러닝 라이브러리 Top 5 machine learning libraries for Java file 졸리운_곰 2017.08.22 389
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED