expect 스크립트를 이용한 KLIS 서비스 내리기
2010.05.11 11:54
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
대부분의 프로그램들을 쉘스크립트를 이용하여 자동화 시킬수 있으나,
실행후 대화식의 프로그램은 자동화하기가 난감하다. (예를들면 telnet, ftp 등 로그인이 필요한 프로그램들)
이를 간편화하기 위해서 expect 라는 유틸리티를 이용할 수 있다.
1. 설치
http://www.bullfreeware.com 에서 AIX용 expect 바이너리를 다운받아서 설치하면된다.
단, expect 는 tcl 기반이므로 tcl도 함께 받아서 tcl 먼저 설치후 expect 를 설치하도록 한다.
2. 다음과 같은 스크립트를 이용한다.
----------------------------------------------------------------------------------------
#!/bin/ksh
### KLIS tomcat start
function tcstart
{
su - klismap -c /backup/raid/klis/klismap/start.sh
echo
sleep 1
}
### KLIS middleware stop
function midstop
{
EXPSH=/backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh
su - lmisdpv -c $EXPSH
echo
}
tcstart
midstop
---------------------------------------------------------------------------
2개의 함수를 제작하여 함수를 차례대로 불러낸 스크립트 이다.
midstop 이라는 함수를 보면 /backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh 파일을 불러내도록 되어있다.
/backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh ---------------------------------------------------
cd
cd ac41/bin
./midstop2.sh
-----------------------------------------------------------------------------------------------
midstop2.sh 파일이 expect 문법으로 되어있는 스크립트 이다.
바로 불러오지 않은 이유는 반드시 ac41/bin 에서 실행되어야 하는 스크립트 이기 때문이다.
midstop2.sh ------------------------------------------------------------------------------------
#!/usr/local/bin/expect // expect 문법임을 명시
spawn ./cmdline // cmdline 실행후
expect -re "]:" // ]: 와 같은 메시지가 나오게 되면
sleep 0.5
send "\r" // 그냥 엔터를 친것과 같이 보냄
expect -re "word:"
sleep 0.5
send "\r"
expect -re "2:"
sleep 0.5
send "\r"
expect -re "]:"
sleep 0.5
send "\r"
expect -re "]:"
sleep 0.5
send "\r"
expect -re "/>" // />와 같은 메시지가 나오면
sleep 0.5
send "cd Configurations\r" // cd Configurations 후 엔터를 보낸다.
expect -re "/Configurations>"
sleep 0.5
send "ls KLISMiddleWare\r"
sleep 2
expect -re "/Configurations>"
sleep 0.5
send "ls SystemMonitoringClient\r"
sleep 2
expect -re "/Configurations>"
sleep 0.5
#send "exit\r"
interact // expect 명령어 종료하고 유저에게 제어권을 넘긴다.
--------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
대부분의 프로그램들을 쉘스크립트를 이용하여 자동화 시킬수 있으나,
실행후 대화식의 프로그램은 자동화하기가 난감하다. (예를들면 telnet, ftp 등 로그인이 필요한 프로그램들)
이를 간편화하기 위해서 expect 라는 유틸리티를 이용할 수 있다.
1. 설치
http://www.bullfreeware.com 에서 AIX용 expect 바이너리를 다운받아서 설치하면된다.
단, expect 는 tcl 기반이므로 tcl도 함께 받아서 tcl 먼저 설치후 expect 를 설치하도록 한다.
2. 다음과 같은 스크립트를 이용한다.
----------------------------------------------------------------------------------------
#!/bin/ksh
### KLIS tomcat start
function tcstart
{
su - klismap -c /backup/raid/klis/klismap/start.sh
echo
sleep 1
}
### KLIS middleware stop
function midstop
{
EXPSH=/backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh
su - lmisdpv -c $EXPSH
echo
}
tcstart
midstop
---------------------------------------------------------------------------
2개의 함수를 제작하여 함수를 차례대로 불러낸 스크립트 이다.
midstop 이라는 함수를 보면 /backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh 파일을 불러내도록 되어있다.
/backup/raid/lmis/lmisdpv/ac41/bin/midstop.sh ---------------------------------------------------
cd
cd ac41/bin
./midstop2.sh
-----------------------------------------------------------------------------------------------
midstop2.sh 파일이 expect 문법으로 되어있는 스크립트 이다.
바로 불러오지 않은 이유는 반드시 ac41/bin 에서 실행되어야 하는 스크립트 이기 때문이다.
midstop2.sh ------------------------------------------------------------------------------------
#!/usr/local/bin/expect // expect 문법임을 명시
spawn ./cmdline // cmdline 실행후
expect -re "]:" // ]: 와 같은 메시지가 나오게 되면
sleep 0.5
send "\r" // 그냥 엔터를 친것과 같이 보냄
expect -re "word:"
sleep 0.5
send "\r"
expect -re "2:"
sleep 0.5
send "\r"
expect -re "]:"
sleep 0.5
send "\r"
expect -re "]:"
sleep 0.5
send "\r"
expect -re "/>" // />와 같은 메시지가 나오면
sleep 0.5
send "cd Configurations\r" // cd Configurations 후 엔터를 보낸다.
expect -re "/Configurations>"
sleep 0.5
send "ls KLISMiddleWare\r"
sleep 2
expect -re "/Configurations>"
sleep 0.5
send "ls SystemMonitoringClient\r"
sleep 2
expect -re "/Configurations>"
sleep 0.5
#send "exit\r"
interact // expect 명령어 종료하고 유저에게 제어권을 넘긴다.
--------------------------------------------------------------------------------------------------