2012-10-18 3 views
1

기대하는 bash 스크립트를 작성 중입니다. bash가 사용자에게 예상대로 제어를 반환합니다.

#!/bin/bash 
IP1="a.b.c.d" 
IP2="e.f.g.h" 
HOST="xyz.com" 
KEY="/path/to/key/file" 
PORT="sshport" 
/usr/bin/expect << EOD 
    spawn ssh -p $PORT -i $KEY $HOST 
    expect "*#" 
    send "sh somescript\r" 
    expect "Prompt from script:" 
    send "$IP1\r" 
    expect "Second Prompt from script" 
    send "$IP2\r" 
    interact 

EOD 

는 그 사용자가 IP2를 전송 한 후 스크립트와 상호 작용할 수 있도록 다시 제어를 얻을 것으로 예상하고 있지만, 스크립트는 원격 호스트에서 세션에서, 로그를 종료합니다. 제발 포인터주세요.

는 미트

+0

이 방법이 도움이됩니까? http://stackoverflow.com/q/7737280/1030675 – choroba

답변

2

당신은 설정되지 않은 명령을 "기대"감사하지만, 단지의 표준 입력을 "기대"로 전송.

아래와 같이 expect 명령을 지정하려면 "-c"를 사용하고, 명령 파일을 지정하려면 "-f"를 사용할 수 있습니다.

/usr/bin/expect -c " 
    spawn ssh -p $PORT -i $KEY $HOST 
    expect \"*#\" 
    send \"sh somescript\r\" 
    expect \"Prompt from script:\" 
    send \"$IP1\r\" 
    expect \"Second Prompt from script\" 
    send \"$IP2\r\" 
    interact 
" 
관련 문제