2009-06-03 7 views
0

나는 약 12 ​​번 사용자의 암호를 묻는 메시지를 표시하는 응용 프로그램을 실행 중입니다 :-( 이 문제를 우회하여 자동 모드로 실행하려고했지만 기대할 수는 없었습니다. 정확하게 정적이 아닌 여러 번 암호 문제를 극복하십시오. 때로는 4 ~ 5 회 정도, 때로는 9 ~ 10 회 정도만 묻습니다.비밀 번호를 여러 번 입력하십시오

아래에 나와있는 것보다 더 나은 해결책이 있습니까?

spawn myApp [lindex $argv 0] 
expect " password: $" 
send "$password\r" 
expect { 
    " password: $" send "$password\r" 
    "^Rollout Done " 
    "^Rollout Updated " 
} 

위의 해결 방법을 통해 나는 암호를 두 번 잡은 다음 수동으로 시작했습니다 나머지 시간 동안 암호가있을 수 있습니까?

답변

0

Expect는 루프를 사용할 수 있습니다. 내가 생각하기에 몇 가지 추가 된 명령을 사용하면 TCL 일뿐입니다. 그것은 반환에서 현재 [expect] 명령을 방지, 그래서 후속 암호 프롬프트를 찾을 수 있습니다 - 그러니 그냥

set found 0 
while {$found < 1} 
{ 
expect { 
" password: $" send "$password\r" 
"^Rollout Done " set found 1 
"^Rollout Updated " set found 1 
} 
} 
+0

당신이 당신의 행동 주위 {중괄호} 필요가보고 싶다면

spawn myApp [lindex $argv 0] expect { -re { password: $} { send "$password\r" exp_continue } -re {^Rollout (?:Done|Updated) } } 

은 : {보내 {세트는 1 발견} "$ password \ r"} –

관련 문제