|
커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
|
|
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
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 )에게. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 있습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB © 2001, 2005 phpBB Group
|