1. Script 모드 사용법 및 Script 작성법

본 절에서는 Script 모드 사용법 및 Script 작성법에 대해서 설명한다.

1.1. Script 모드 사용법

Script모드로 jeusadmin을 동작시킨다.

  • 예제

    다음은 JEUS 사용자 이름은 'administrator', 비밀번호는 'jeus’로 가정하고 test.py 스크립트를 실행하는 jeusadmin script 모드 예제이다.

    JEUS_HOME/bin$jeusadmin -u administrator -p jeus -script "test.py"
    Attempting to connect to 127.0.0.1:9736.
    The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    JEUS 21 Administration Tool
    To view help, use the 'help' command.

    Script 모드로 사용시 추가적으로 JEUS 커맨드 예외를 무시하는 옵션을 사용 할 수 있다. -i 또는 -ignore 옵션을 사용하면 JEUS 커맨드 오류가 발생하더라도 스크립트는 계속 이어서 실행된다. 단, 스크립트 자체의 오류가 있을 경우에는 중단된다.

    [-i, --ignore] 옵션은 Script 모드에서만 사용 가능하다.

    JEUS_HOME/bin$jeusadmin -u administrator -p jeus -script "test.py" -i
    JEUS_HOME/bin$jeusadmin -u administrator -p jeus -script "test.py" --ignore

    아래와 같이 스크립트에 인자를 넘겨 줄 수도 있다.

    JEUS_HOME/bin$jeusadmin -u administrator -p jeus -script "test.py arg1 arg2"

1.2. Script 작성법

jeusadmin은 Script 모드로 동작할 때에 JEUS 커맨드 실행을 위한 메서드와 결과 데이터를 제공한다.

  • 커맨드 실행

    아래와 같은 방법으로 각 스크립트 언어별로 JEUS 커맨드를 실행할 수 있다.

    • Python, Ruby 공통

      result = command("server-info")
    • Ruby

      result = command "server-info"

      선택 사항으로 JEUS 커맨드에 verbose 옵션을 추가적으로 실행할 수 있다. 기본적으로 비활성화(false) 상태이다. JEUS 커맨드에 verbose 옵션을 활성화(true) 한 경우에는 해당 커맨드의 실행 결과를 화면에 상세하게 출력한다.

    • Python:

      result = command("server-info", [True | False])
    • Ruby:

      result = command "server-info", [true | false]
  • 결과 데이터

    JEUS 커맨드 실행에 대한 결과로 JeusResult 객체가 리턴되며 결과가 표 형태의 결과를 포함할 경우 JeusResult로부터 JeusTabularData 객체를 얻을 수 있다. 각 데이터 타입은 아래와 같은 메소드를 제공한다.

    • JeusResult

      메소드 설명

      isComplete()

      JEUS 커맨드 실행이 정상적으로 완료되었는지 리턴한다.

      getMessage()

      결과 메시지를 리턴한다.

      getData()

      결과의 표 데이터인 JeusTabularData의 리스트를 리턴한다.

    • JeusTabularData

      메소드 설명

      getTitle()

      표의 타이틀을 리턴한다.

      getHeader()

      표의 머릿말을 리턴한다.

      getFooter()

      표의 꼬릿말 리턴한다.

      getColumnNames()

      표의 각 열의 제목만을 리스트 형태로 리턴한다.

      getRows()

      표 데이터의 각 행의 리스트를 리턴한다.

  • 예제

    • SHUTDOWN 상태인 서버들을 찾아 출력한다.

      result = command("server-info")
      tables = result.getData();
      table = tables[0];
      rows = table.getRows();
      shutdown_servers = []
      for row in rows:
          if "SHUTDOWN" in row[1]:
              shutdown_servers.append(row[0])
              print("Server : %s, Node : %s" % (row[0], row[2]))
    • 스크립트의 인자로 애플리케이션 경로와 deploy할 서버 리스트를 받아 애플리케이션을 install, deploy한다.

      import time
      import sys
      import os
      
      path = sys.argv[0]
      servers = sys.argv[1]
      direc, app = os.path.split(path)
      apptype = os.path.splitext(app)[1][1:].upper()
      
      command("undeploy -f %s " % app)
      command("uninstall-application %s" % app)
      command("install-application %s -id %s" % (path, app))
      command("deploy %s -servers %s -type %s" % (app, servers, apptype))

현재 jeusadmin에서는 Python과 Ruby 두 가지 스크립트 언어에 대해서만 스크립트 모드를 제공하며 이를 확장자로 구분하고 있다. 각각 .py와 .rb 확장자에 대해서만 스크립트를 인식하여 동작한다.