| expect 프로그래밍 예 두번째 | 작성일 : 2003/11/04 17:29 |
| 조회수 : 13328 |
|
97년에 나우누리 리눅스동호회에 소인이 쓴 글입니다. 공짜로 삐삐 호출하는 기능을 구현한 것인데, 지금은 의미 없겠지요. 그 때는 삐삐 호출을 guest로 접속해서도 가능했습니다. ^^ 권순선님이 쓰신 '리눅스 파워 툴 레퍼런스'(지금은 절판됨)에서도 인용된 스크립트입니다. 아래부터 97년에 쓴 글이며, 수정없이 그대로 올립니다. ----------------------------------------------------------------------------- 나우누리의 호출명령어(bb)를 이용하여 호출을 하는 expect 스크립트입니다. guest로 로긴하여도 되는 것은 아시죠? ID없어도 되니, 이 스크립트는 누구나 이용할 수 있습니다. 전에 제가 '채팅족을 위한 expect 활용'을 쓴 적이 있는데, 그 것보다는 더 유용한 스크립트가 될 것 같군요. 정상적으로 접속이 되면 10초도 안걸리고 삐삐를 치니까, 전화로 하는 것보다 빠르고, 요금(50원?)도 절약이 되겠죠. 아래는 스크립트입니다. 기본적인 명령을 이용했으니, 전체적인 설명은 하지 않겠고, 부분적인 설명만 하겠습니다. >--------------------------------------------------------------- #!/usr/bin/expect -- # # 삐삐치기 bb v0.1 # Made by 좋은진호(truefeel) # 1997. 11. set ID guest set BELL \007 set bbnum [lindex $argv 0] set renum [lindex $argv 1] set nownuri nownuri.net set logintime 600 if { $renum == "" } { send_user "사용법 : bb \[수신호출번호\] \[연락받을 번호\]\n" exit } # ------------------------------------------- # 나우누리에 접속 # ------------------------------------------- spawn telnet -8 $nownuri expect -timeout $logintime "나 우 ID :" sleep 1 send "$ID\r" expect "Enter" sleep 1 send "\r" # ------------------------------------------- # 삐삐 호출 # ------------------------------------------- expect "선택>" send "bb\r" expect " :" send "1\r" expect "번호 :" send "$bbnum\r" expect "번호 :" send "\r" expect -re "취소합니다." { expect "선택>" sleep 1 send "bye\r" expect " ------" send_user $BELL sleep 1 send_user $BELL send_user "호출 번호를 정확히 입력하세요.\n" } -re "번호입니다." { expect " :" send "$renum\r" expect "선택>" sleep 1 send "bye\r" } interact >--------------------------------------------------------------- * set bbnum [lindex $argv 0] <-- 첫번째 인수($argv 0)를 $bbnum에 저장 * set renum [lindex $argv 1] <-- 두번째 인수($argv 1)를 $renum에 저장 * if { $renum == "" } { ... } <-- 2개의 인수 입력이 없으면 도움말 출력 * set logintime 600 expect -timeout $logintime "나 우 ID :" <-- 이 부분에서 눈여겨 볼 것은 -timeout 옵션 지정입니다. 나우누리의 경우 접속이 한참 후에 되는 경우가 있습니다. 만약 -timeout 옵션을 쓰지 않았 을 때, 나우 접속이 늦게 된다면 다음 줄(send "$ID\r")에 있는 $ID를 엉뚱한 곳에 보내게 됩니다. 이를 막기위한 것이죠. 여기서는 10분(600초) 동안 '나 우 ID'를 기다립니다. 물론 찾으면 바로 다음으로 넘어가고요. * expect -re "취소합니다." { ... send_user $BELL sleep 1 send_user $BELL send_user "호출 번호를 정확히 입력하세요.\n" <-- 호출번호를 제대로 입력하지 않았을 경우('취소합니다'를 찾았을 경우) 삑 소리($BELL)를 두 번 내고, 메시지를 출력합니다. 이 정도면 설명은 다 된 것 같군요. 이 스크립트는 입력한 인수(호출번호, 받을 전화번호)가 숫자인지, 문자인지는 판단하지 않습니다. 이건 사용자가 알아서 정확히 입력해야합니다. |
|||||||||
|
|