Linux 사용시 shell script 에서 사용자 입력을 받아야 하는 경우가 있다 이럴 경우 자동화를 하는데 문제가 발생하는데 이를 해결해 주는 방법은 expect 라는 프로그램을 사용하는 것이다.
expect 는 몇가지 명령으로 interactive 한 shell 프로그램을 사용하도록 해준다.
기본적인 포맷은 아래와 같다.
#!/usr/bin/expect -f
set timeout 10
set build_opt [lindex $argv 0];
spawn ./build_android.sh
expect {
"Which would you like" {
send "$build_opt\r"
}
failed {exit 1}
timeout {exit 1}
}
1줄은 해당 file을 실행하면 expect 로 실행하라는 명령
#!/usr/bin/expect -f
2번째 줄은 한개의 expect 명령을 실행할 때 최대 wait 시간
set timeout 10
3번째 줄은 실행시 사용할 option 을 받아옴
set build_opt [lindex $argv 0];
4번째 줄은 실제로 실행할 shell script 또는 실행파일
spawn ./build_android.sh
5번째 expect 부터는 세부 옵션 설정
6 번째 줄은 ./build_android.sh 의 output 을 기다리다가 해당 문구 "Which would you like" 가 나올때 7 번째 줄의 "$build_opt\r" 을 실행함
9번째 줄 은 실행 시 error 가 발생하였을 경우 처리하는 부분. 이 부분이 없으면 error 처리가 되지 않고 이후 부분이 계속 실행됨.
failed {exit 1}
10번째 줄은 2번째 줄에서 설정한 timeout 시간이 넘었을 경우 error 처리 부분.
timeout {exit 1}
이와 같은 형식으로 5번째 line 에서 11 번째 line 까지의 내용을 적절히 수정하여 순차적으로 실행 하도록 하면 됨.
이상 ubuntu linux 사용자 입력을 자동으로 해주는 프로그램 expect 이였습니다.
Ubuntu 한/영 키가 Right Alt key로 동작할 때 대처방법 (0) | 2017.02.01 |
---|---|
Ubuntu Domain Name Server setting 및 DNS file 자세한 설명 (0) | 2017.01.19 |
ubuntu shell password GUI 띄우기 (0) | 2016.01.05 |
아파치 웹서버 재실행 방법 (0) | 2015.12.21 |
shell 명령어 find 사용시 find: paths must precede expression: error 처리 방법 (0) | 2015.12.07 |