시스템관리자의 쉼터 커피닉스 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

가입없이 누구나 글을 쓸 수 있습니다. 공지사항에 대한 댓글까지도..




BBS >> 설치, 운영 Q&A | 네트웍, 보안 Q&A | 일반 Q&A || 정보마당 | AWS || 자유게시판 | 구인구직 || 공지사항 | 의견제시
expect 사용한 자동화 프로그램작성시 에러사항

 
글 쓰기   답변 달기    커피닉스, 시스템 엔지니어의 쉼터 게시판 인덱스 -> 시스템 설치 및 운영
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
kashmire55
손님





올리기올려짐: 2006.10.31 화, 3:10 pm    주제: expect 사용한 자동화 프로그램작성시 에러사항 인용과 함께 답변 글 편집/삭제

제가 요즘 Expect를 사용한 자동화 프로그램을 작성하고 있는데
한가지 문제점에 도달해서 이렇게 염치불구하고 질문을 올립니다.
우선 호스트에서 원격접속을 위해 telnet을 사용해서 원격접속을 합니다.
그리고 원격접속한 컴퓨터에서 명령어를 주면 동작은 잘 하고 있습니다.

그런데 제가 telnet으로 원격접속한 컴퓨터에서 Application을 실행시키면
최초 실행은 되는데 그 다음 제가 어떤 문장을 보고 그 문장에 해당되는
답을 입력을 해야되는데 여기서 문제가 생기고 있습니다.

프롬프트 상태에서는 Standard output이 정상적으로 동작이 되는데
Application에서는 output이 정상적으로 동작이 안되는것 같습니다.
디버그 모드로 들어가서 확인을 해본 결과 expect_buffer가 화면이
바뀌면서 초기화가 되는거 같습니다. ㅠ0ㅠ

처음에는 send만 사용해서 입력값을 줄려고 했는데 조금 더 정확성을
올리기 위해 exp_send -i $spawn_id $command 방식을 사용해서
입력을 주면 디버그상태에서는 분명히 output을 한다고 나오는데
정작 실행되는것이 없으니 어디서 잘못되고 있는건지 모르겠습니다.

지금 이러한 문제점을 해결못하고 있어서 이렇게 질문을 올립니다.
위로
truefeel
카페 관리자


가입: 2003년 7월 24일
올린 글: 1277
위치: 대한민국

올리기올려짐: 2006.11.01 수, 11:44 am    주제: Re: expect 사용한 자동화 프로그램작성시 에러사항 인용과 함께 답변

소스없이 질문 자체로는 파악이 잘 안되네요.
작성중인 expect 스크립트를 공개하기 힘들면 가입 후에 쪽지로 보내주세요.
아니면 메일로 스크립트를 보내주시면 살펴보겠습니다.

상황 정리하면.

코드:

   spawn으로 telnet 접속
-> expect, send 로 ID/PW 자동 입력
-> APP. 실행
-> APP.에서 어떤 메시지를 뿌려주고               <-- 여기까지는 정상
-> 메시지에 따라서 사용자가 입력(자동 입력 아님) <-- 여기부터 안된다는 건가요?
-> 입력에 따라 진행


맞나요?

인용:

프롬프트 상태에서는 Standard output이 정상적으로 동작이 되는데
Application에서는 output이 정상적으로 동작이 안되는것 같습니다.


expect 는 standard output이든 error output 이든 모두 expect할 수 있습니다.

중간에 메시지를 보고 사용자가 값을 입력하는 부분은 어떻게 처리했나요?
이를테면 expect_user나 interact 를 통해서 입력 받을 수가 있습니다.

코드:

set timeout 초단위_시간            <-- 입력시간(expect timeout시간)을 늘려주는게 좋겠죠.
expect_user -re "(.*)\n"
set answer $expect_out(1,string)   <-- 사용자 입력값만 뽑아 $answer 변수에 저장
send "$answer\r"                   <-- 입력값 보냄


interact를 이용해서 case문 처럼 사용. a 입력시, b 입력시 처리 등을 {} 문 안에 넣으면 되구요.

코드:

interact {
        "a\r" { send "a\r" }
        "b\r" { send "b\r" }
        "c\r" { send "c\r" }
        "d\r" { send "d\r" }
}


역시 뜬구름 잡기... ^^*
좋은 expect 스크립트 예제들은 구글님( http://www.google.com/codesearch )에게.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
글 쓰기   답변 달기    커피닉스, 시스템 엔지니어의 쉼터 게시판 인덱스 -> 시스템 설치 및 운영 시간대: GMT + 9 시간(한국)
페이지 1 중 1

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 있습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB © 2001, 2005 phpBB Group