커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 프로그래밍 / 개발 도움말
검색 : 사이트 WHOIS 웹서버 종류

웹 프로그래밍 / PHP (19, 글 13, 자료 15)
프로그래밍 툴 / IDE (12, 자료 3)
라이브러리 (3)
C, C++ (10, 자료 11)
Java(자바) (13, 글 1, 자료 5)
Python (파이썬) (5, 자료 2)
쉘 프로그래밍(shell script, 셀) (8, 글 3, 자료 4)
오픈소스 / 프로젝트 (2)
Perl (펄) (7, 자료 3)
임베디드(embedded) (8, 글 1, 자료 6)
버전관리 / CVS (8, 글 1, 자료 3)
포팅 / 마이그레이션 (1, 자료 1)
Assembly (어셈블리) (3, 자료 1)
디버깅, 디버그(debug), 디버거 (4, 글 1, 자료 3)
XML (2)
기타언어 (2, 자료 1)
모바일(mobile, wap) (2, 자료 1)

  expect 프로그래밍 예 두번째 작성일 : 2003/11/04 17:29
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 8116
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      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)를 두 번 내고, 메시지를 출력합니다.

        이 정도면 설명은 다 된 것 같군요. 이 스크립트는 입력한 인수(호출번호, 받을
      전화번호)가 숫자인지, 문자인지는 판단하지 않습니다. 이건 사용자가 알아서
      정확히 입력해야합니다.
      커피닉스 카페 최근 글
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Mobile 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Web Front 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Server 개발 팀장을 모십니다.
    [12/21] 브라우저별 SHA1 퇴출 시점
    [09/15] [구인] 시스템엔지니어 (경력)
    [08/05] Re: 칼리리눅스 텔넷관련
    [08/04] 칼리리눅스 텔넷관련
    [06/29] 또 다른 무료 SSL 인증서, Let's Encrypt
    [06/29] FreeBSD에서 Leap Second(윤초)는? 문제 없다.
    [06/25] [정규직/충무로] 경력직 서버 개발자를 모십니다
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~