목차/04. 명령줄 인터페이스 (Gaia Clish)

04명령줄 인터페이스 (Gaia Clish)명령줄 인터페이스 (Gaia Clish)

Gaia의 기본 셸은 clish 입니다. 이 장은 Gaia Clish에 로그인하고, 명령을 짓고, 자동 완성·이력으로 빠르게 입력하며, 변경을 저장하고, 구성 잠금·환경을 다루고, 필요하면 Expert mode로 내려가는 명령줄 작업의 모든 기본기를 빠짐없이 정리합니다. 원문이 표와 단축키 목록으로 나열한 내용도 그대로 담되, 왜 그렇게 쓰는지를 함께 풀어 둡니다.

Gaia Clish에 들어가기

Gaia 시스템에는 두 가지 길로 접속합니다.

  1. SmartConsole 에서 — 중앙 관리로 Gaia 설정을 다루는 방식입니다(SmartConsole 중앙 관리).
  2. 명령줄 연결 로 — SSH 또는 콘솔로 직접 붙습니다.

접속한 뒤 사용자 이름·암호로 로그인합니다. 설치 직후 기본 사용자 이름과 암호는 모두 admin 입니다(첫 로그인 후 반드시 바꾸세요).

Security Group에서는 gClish

Maestro·Chassis 같은 Scalable Platform의 Security Group 을 구성할 때는 Gaia Clish 대신 Gaia gClish(Global Clish)를 씁니다. 해당 Security Group의 명령줄에 붙어 Gaia Clish에 로그인한 다음, 이렇게 진입합니다.

gclish

gClish는 쓰는 법은 Gaia Clish와 같지만, 명령이 기본적으로 "전역(global)"이라 Security Group의 모든 멤버에 적용 된다는 점이 다릅니다. 몇 가지 규칙을 알아 두어야 합니다.

  • DOWN 상태 멤버는 제외 됩니다. 어떤 멤버가 관리상·장애로 DOWN인 동안 set 명령이 실행되면 그 멤버에는 적용되지 않습니다. 해당 멤버는 재시작 과정에서 데이터베이스를 동기화 하고, 내용이 바뀌었으면 변경을 반영하려고 스스로 재부팅합니다.
  • config-lock(구성 잠금) 은 gClish 데이터베이스를 보호하는 잠금으로, 시스템 전체에서 한 멤버만 잠금을 쥘 수 있습니다. 특정 멤버에서 set 작업을 하려면 그 멤버가 config-lock을 쥐고 있어야 합니다.
  show {config-lock | config-state}     # 현재 잠금 상태 보기
  set config-lock on override            # 잠금 획득(강제)
  
  • gClish 트래픽은 Sync 인터페이스의 TCP 1129 포트 로 흐릅니다.
  • Gaia Clish처럼 gClish도 확장 명령(extended commands)을 실행할 수 있습니다. 목록은 show commands extended로 봅니다.
  • 일부 멤버에만 명령을 적용하려면 set blade-range 명령으로 대상 멤버 집합을 지정합니다.

변경은 반드시 저장해야 한다

여기서 반드시 기억할 것 이 있습니다. Gaia Clish로 OS 구성을 바꾸면 그 변경은 실행 중인 시스템에는 즉시 적용되지만, 재부팅하면 사라진 다는 점입니다.

CLI 구문 표기법 읽는 법

이 가이드(와 Check Point 문서 전반)는 명령·파라미터·옵션을 가능하면 알파벳 순 으로 싣고, 구문을 다음 약속대로 표기합니다. 이걸 알아야 다른 장의 명령 설명도 정확히 읽을 수 있습니다.

표기
TAB(들여쓰기)중첩된 하위 명령을 나타냅니다. 들여쓴 줄은 위 명령의 하위 명령입니다.
중괄호 { }세로줄 `\` 로 구분된 후보 목록. 이 중 하나만 고를 수 있습니다.
꺾쇠 < >변수. 사용자가 지원되는 실제 값을 직접 지정 해야 합니다.
대괄호 [ ]선택적(optional) 명령·파라미터. 넣어도 되고 안 넣어도 됩니다.

들여쓰기(TAB) 표기가 헷갈리기 쉬운데, 예를 들어 이렇게 쓰여 있으면:

    config
        -a <options>
        -d <options>
        -p
        -r
    del <options>

실제로는 아래 중 하나의 명령 을 실행하라는 뜻입니다 — cpwd_admin config -a <options>, cpwd_admin config -d <options>, cpwd_admin config -p, cpwd_admin config -r, 또는 cpwd_admin del <options>.

자동 완성 — 다음에 뭘 칠지 모를 때

Gaia Clish는 외우지 않아도 다음 입력을 알려 주는 자동 완성이 강력합니다. 시간을 아끼고, 무엇을 칠지 모를 때 길잡이가 됩니다.

하는 일
<TAB>키워드를 완성하거나 가능한 후보 를 보여 줍니다. 예: set in<TAB>inactivity-timeout, interface 후보 표시
<SPACE><TAB>그 기능이 받는 인자(argument) 를 보여 줍니다. 예: set interface<SPACE><TAB>eth0 eth1 lo
<ESC><ESC>가능한 전체 명령 형태 를 펼쳐 보여 줍니다.
<SHIFT>?현재 기능·키워드의 도움말 을 띄웁니다.
↑ / ↓명령 이력을 위아래로 넘깁니다.
← / →현재 명령 안에서 커서를 옮겨 편집합니다.
Enter현재 명령을 실행합니다. 커서가 줄 끝에 없어도 됩니다.

명령의 구조와 연산(operation)

Gaia Clish 명령은 관련 기능끼리 묶여 있고, 기본 구조는 일정합니다.

<Operation> <Feature> <Parameter>

주 연산(main operations) 네 가지가 가장 자주 쓰입니다.

연산설명
add시스템에 새 구성을 추가·생성합니다.
set시스템의 값을 설정합니다.
show값을 조회합니다.
delete구성을 삭제합니다.

그 밖의 연산도 알아 두면 좋습니다.

연산설명
save마지막 저장 이후의 변경을 저장합니다(save config).
reboot시스템을 재시작합니다.
halt시스템을 끕니다.
quitGaia Clish를 빠져나갑니다.
exit현재 작업 중인 셸을 빠져나갑니다.
start / commit / rollback트랜잭션 을 시작/확정/취소합니다(아래 설명).
expertExpert 셸로 들어갑니다(파일 시스템 등 저수준 접근).
ver활성 Gaia 이미지의 버전을 보여 줍니다.
restore시스템 구성을 복원합니다.
helpGaia Clish 탐색법과 유용한 명령의 도움말을 보여 줍니다.

여기서 트랜잭션 모드 가 유용합니다. start로 트랜잭션을 시작하면, 그 안에서 한 모든 변경은 한꺼번에 적용(commit)되거나, 전부 취소(rollback) 됩니다 — 중간 상태가 남지 않으니 위험한 변경을 안전하게 묶어 적용할 수 있습니다.

가능한 명령을 직접 둘러보는 방법도 있습니다.

show commands                              # 내 권한으로 쓸 수 있는 명령
show commands feature<SPACE><TAB>          # 모든 기능 목록
show commands feature <FeatureName>        # 특정 기능의 모든 명령
show commands [op <Name>] [feature <Name>] # 특정 연산/기능의 명령
show commands op<SPACE><TAB>               # 모든 연산 목록

목록이 길어 More 프롬프트가 뜨면 — <SPACE>로 다음 페이지, <ENTER>로 다음 줄, Q로 빠져나갑니다.

명령 이력 다시 쓰기

이미 쓴 명령은 이전 세션 것까지 불러올 수 있습니다.

명령설명
?직전 명령을 불러옵니다.
history최근 실행한 100개 명령을 보여 줍니다.
!!마지막 명령을 다시 실행합니다.
!nn이력의 특정 번호 명령을 실행합니다. 예: !14
!-nn가장 최근에서 거꾸로 센 nn번째 명령. 예: !-3 은 끝에서 세 번째
!strstr로 시작하는 가장 최근 명령 을 실행합니다. 예: !show

단어 단위로 재사용하기

이력 명령에 단어 지정자(word designator) 를 붙이면 이전 명령의 특정 단어만 가져올 수 있습니다. 단어는 줄 처음부터 0번(연산어)·1번·2번… 으로 셉니다. 이력 명령과 단어 지정자는 콜론(:)으로 구분합니다. 예를 들어 !!:1 은 직전 명령의 첫 번째 인자를 가리킵니다(show interfaces에서 interfaces가 1번 단어).

단어 지정자
0연산어(operation word)
nn번째 단어
^첫 번째 인자(= 1번 단어)
$마지막 인자
%가장 최근 ?str? 검색으로 매칭된 단어

단어 지정자 바로 뒤에는 콜론을 앞세운 수정자(modifier) 를 하나 이상 이어 붙일 수 있습니다.

수정자
p새 명령을 출력만 하고 실행하지 않 습니다.
s/str1/str2가리킨 단어에서 첫 번째 str1str2로 바꿉니다.
g변경을 명령 전체에 적용합니다. s와 함께 gs/str1/str2 형태로 씁니다.

줄 안에서 이동·편집하기

명령줄을 고칠 때 쓰는 키들입니다(Emacs식 단축키와 같습니다).

동작
CTRL L화면을 지우고 현재 명령을 맨 위에 다시 보여 줍니다.
Home, CTRL A명령줄 맨 앞으로 이동.
End, CTRL E명령줄 맨 끝으로 이동.
, CTRL B커서 왼쪽 문자로 이동.
, CTRL F커서 오른쪽 문자로 이동.
CTRL →, ALT F오른쪽 다음 단어로 점프.
Backspace, CTRL H커서 왼쪽 문자 삭제.
ALT D커서 오른쪽 단어 삭제(커서가 단어 시작에 있을 때).
CTRL ALT H커서 왼쪽 단어 삭제(커서가 단어 끝에 있을 때).
CTRL U현재 입력한 명령을 통째로 삭제.
CTRL N이력에서 아래쪽(최신 쪽) 명령을 차례로 보여 줍니다.
CTRL P이력에서 위쪽(과거 쪽) 명령을 차례로 보여 줍니다.
CTRL R이력에서 입력한 문자열과 일치하는 명령을 검색 합니다.

구성 잠금(Configuration Lock)

Gaia 구성 데이터베이스는 한 번에 한 사용자만 Read/Write 권한 을 가질 수 있습니다. 나머지 사용자는 자신의 역할(role)이 허용하는 범위에서 Read-Only로 로그인해 설정을 보기만 합니다(역할).

로그인할 때 다른 사용자가 쓰기 권한을 쥐고 있지 않으면, 여러분이 배타적 잠금을 얻어 Read/Write가 됩니다. 이미 다른 사용자가 잠금을 쥐고 있다면, 그 잠금을 override(강제 획득) 할지 선택할 수 있습니다.

  • override 하면 — 상대는 로그인을 유지하되 Read-Only로 바뀝니다.
  • override 하지 않으면 — 여러분은 설정을 바꿀 수 없습니다.

lock database / unlock database 명령

lock database override
unlock database

lock database override다른 관리자의 쓰기 권한을 빼앗아 배타적 Read/Write를 얻는 명령입니다.

참고로 lock database overrideset config-lock on override 와 똑같고, unlock databaseset config-lock off 와 똑같습니다.

config-lock 명령

구성 잠금의 상태를 설정·조회합니다.

set config-lock
    off
    on [timeout <5-900>] override
show
    config-lock
    config-state
파라미터설명
off구성 잠금을 끕니다.
on구성 잠금을 켭니다. 기본 timeout은 300초 입니다.
timeout <5-900>(선택) 지정한 초 동안만 잠금을 켭니다.

set config-lock on override = lock database override, set config-lock off = unlock database 로 서로 같은 명령입니다.

클라이언트 환경(clienv) 다듬기

셸의 동작 방식은 클라이언트 환경 으로 바꿉니다. 한 세션 동안만, 또는 영구적으로 설정할 수 있습니다.

show clienv {all | config-lock | debug | echo-cmd | on-failure | output | prompt | rows | syntax-check}

set clienv
    config-lock {on | off}
    debug {0-6}
    echo-cmd {on | off}
    on-failure {continue | stop}
    output {pretty | structured | xml}
    prompt <Prompt String>
    rows <Number of Rows>
    syntax-check {on | off}

save clienv     # 변경을 영구 저장

각 파라미터의 뜻은 다음과 같습니다.

파라미터설명
`config-lock {on\off}`Clish가 시작될 때 구성을 잠글지의 기본값. on이면 Clish가 구성을 잠가, 풀릴 때까지 Gaia Portal에서 변경 불가 합니다.
debug {0-6}디버그 수준. 0(기본, 오류만)·5(confd 데몬 요청·응답)·6(핸들러 호출 파라미터·결과).
`echo-cmd {on\off}`on이면 load configuration으로 실행할 때 명령을 실행 전에 화면에 보여 줍니다. 기본 off.
`on-failure {continue\stop}`파일·스크립트 실행 중 실패 시 동작. continue(오류 표시하되 계속)·stop(기본, 중단).
`output {pretty\structured\xml}`출력 형식. 기본 pretty(아래 설명).
prompt <문자열>프롬프트 문자열. %H(명령 번호)·%I(User ID)·%M(Hostname)·%P(Product ID)·%U(Username) 변수를 조합할 수 있습니다. default로 되돌립니다.
rows <행 수>터미널에 보일 행 수. 창 크기가 바뀌면 따라 바뀌며, 0이면 고정.
`syntax-check {on\off}`on이면 명령을 실행하지 않고 문법만 검사 하고 값을 검증합니다. 기본 off.

출력 형식 세 가지

같은 show user admin 명령도 출력 형식에 따라 다르게 나옵니다.

  • Pretty — 사람이 보기 좋게 정렬된 형식(기본).
  gaia> set clienv output pretty
  gaia> show user admin
  Uid Gid Home Dir.   Shell        Real Name  Privileges
  0   0   /home/admin /bin/cli.sh  Admin      Admin-like shell
  
  • Structured세미콜론(;)으로 구분 해 스크립트 파싱에 좋습니다.
  gaia> set clienv output structured
  gaia> show user admin
  Uid;Gid;Home Dir.;Shell;Real Name;Privileges;
  0;0;/home/admin;/bin/bash;Admin;Admin-like shell;
  
  • XMLXML 태그 를 붙입니다. 프로그램 연동에 유용합니다.
  gaia> set clienv output xml
  gaia> show user admin
  <?xml version="1.0"?>
  <CMDRESPONSE><CMDTEXT>show user admin</CMDTEXT>
  <RESPONSE><System_User><Row>
  <Uid>0</Uid><Gid>0</Gid><Home_Dir.>/home/admin</Home_Dir.>
  <Shell>/bin/bash</Shell><Real_Name>Admin</Real_Name>
  <Privileges>Admin-like shell</Privileges>
  </Row></System_User></RESPONSE></CMDRESPONSE>
  

Expert Mode — 낮은 수준 접근

Gaia Clish는 보안을 위해 명령이 제한된 restricted shell 이라(역할 기반으로 쓸 수 있는 명령이 정해짐) 저수준 시스템 기능에는 닿지 않습니다. 파일 시스템 등 낮은 수준의 구성이 필요하면 더 허용적인 Expert mode 셸 로 내려갑니다(추가로 sk144112 참고).

expert     # Gaia Clish에서 Expert 셸로 진입
exit       # Expert 셸에서 Gaia Clish로 복귀

Expert mode 암호 설정은 시스템 관리의 System Passwords를 참고하세요.

여기엔 꼭 지켜야 할 원칙이 있습니다.

  • Gaia Clish에 명령이 있는 작업은 Expert mode에서 대응 명령을 쓰면 안 됩니다. 예컨대 인터페이스는 Gaia Clish의 show interface·set interface로 다뤄야 하므로, Expert mode에서 ifconfig를 쓰는 것은 지원되지 않습니다.
  • Expert mode는 "더 많은 권한"이 아니라 "더 많은 구성 능력" 을 줄 뿐입니다.
  • Expert mode는 보안 기능이 아니라 실수를 막는 보호 장치 입니다.
  • Expert mode 로그인 감사 로그는 sk181230을 참고하세요.

Gaia는 Expert mode 로그인을 /var/log/messages에 기록합니다 — 로컬 로그인은 Console connection by <user> user to Expert Shell at <시각>, SSH 로그인은 SSH connection by <user> user to Expert Shell with client IP <IP> at <시각> 형태입니다. 이 알림 기능은 다음으로 제어합니다.

show audit login-notifier        # 현재 상태
set audit login-notifier on      # 켜기(기본값)
set audit login-notifier off     # 끄기

사용자 정의(확장) 명령

User Defined (Extended) Commands일반 Linux 명령을 Gaia Clish 명령으로 등록 하는 기능입니다. 확장 명령에는 두 종류가 있습니다 — Gaia·Check Point 제품을 구성·점검하는 내장(built-in) 확장 명령 과, 관리자가 직접 만드는 사용자 정의 명령 입니다.

확장 명령의 진짜 쓸모는 역할 기반 관리(RBA) 와 결합할 때 나옵니다 — 확장 명령을 역할에 할당하고, 그 역할을 사용자·사용자 그룹에 부여해 특정 사용자만 그 명령을 쓰게 만듭니다.

show extended commands                                   # 모든 확장 명령 보기
show command <Command>                                   # 특정 명령의 경로·설명 보기
add command <Command> path <Path> description "<Text>"   # 확장 명령 추가
delete command <Command>                                 # 확장 명령 삭제
파라미터설명
<Command>확장 명령의 이름
<Path>확장 명령의 경로
"<Text>"설명(반드시 큰따옴표로 감쌈)

역할에 넣을 수 있는 확장 명령 목록은 사용자 관리의 역할 항목에서 다룹니다.

예제 — `free` 명령을 john에게 부여하기

리눅스 free 명령(메모리 사용량 표시)을 systemDiagnosis 역할에 넣고, 그 역할을 사용자 john에게 주는 전체 과정입니다.

  1. free 명령을 등록합니다.
   gaia> add command free path /usr/bin/free description "Display amount of free and used memory in the system"
   
  1. 구성을 저장합니다 — save config
  2. Gaia에서 로그아웃합니다.
  3. Gaia에 다시 로그인합니다.
  4. free(확장 명령 ext_free)를 systemDiagnosis 역할에 추가합니다.
   gaia> add rba role systemDiagnosis domain-type System readwrite-features ext_free
   
  1. systemDiagnosis 역할을 사용자 john에게 할당합니다.
   gaia> add rba user john roles systemDiagnosis
   
  1. 구성을 저장합니다 — save config

Gaia Clish 명령 전체 목록 보기

마지막으로, 시스템에서 쓸 수 있는 명령 전체를 직접 확인 하는 방법입니다. 모두 같은 요령으로, 연산어를 친 뒤 <TAB>을 누르는 것입니다.

  1. Gaia 시스템 명령줄에 접속해 Gaia Clish에 로그인합니다.
  2. 다음과 같이 확인합니다.
    • 전체 명령 — 아무것도 안 친 상태에서 <TAB>
    • show 명령 목록show 입력 후 <SPACE> 그리고 <TAB>
    • add 명령 목록add 입력 후 <SPACE> 그리고 <TAB>
    • set 명령 목록set 입력 후 <SPACE> 그리고 <TAB>
    • delete 명령 목록delete 입력 후 <SPACE> 그리고 <TAB>