다음 스크립트가 있습니다.
#!/usr/bin/expect
set timeout 20
set cmd [lrange $argv 1 end]
set password [lindex $argv 0]
eval spawn $cmd
while {1} {
expect "id_rsa"
send "$password\r";
}
interact
목적은 "id_rsa"를 예상하고 생성된 $cmd가 열릴 때 비밀번호를 다시 입력하는 것입니다.
이제 스크립트는 작동하지만 항상 오류로 끝납니다.
send: spawn id expx not open while executing ...
오류가 나타나지 않도록 Expect에서 오류를 잡아서 올바르게 종료하는 것이 아니라 확인하여 while 루프가 올바르게 종료되도록 올바른 방법으로 코드를 작성하고 싶습니다.
미리 감사드립니다.
답변1
변화를 시도하다
while {1} {
expect "id_rsa"
send "$password\r";
}
interact
도착하다
expect {
id_rsa {
send "$password\r"
exp_continue ;# this is the "looping" part
}
eof
}