내 서버의 비밀번호를 변경하고 싶습니다.
서버에서 비밀번호를 변경할 때 허용해야 하는 비밀번호는 4가지가 있습니다.
이를 달성하기 위해 내 서버에 로그인하고 특정 작업을 수행하는 "expect" 스크립트를 작성하고 싶습니다. 하지만 기기가 어떤 비밀번호를 사용하고 있는지는 모르지만 가능한 비밀번호 4개 중 하나라는 것은 알고 있습니다.
따라서 내 스크립트는 네 가지 비밀번호를 모두 순서대로 시도해야 합니다. 이는 첫 번째 비밀번호가 실패하면 스크립트가 두 번째 비밀번호를 시도해야 함을 의미합니다. 다시 실패하면 세 번째로 시도해야 합니다. 실패하면 네 번째 비밀번호를 시도해야 합니다.
이것은 지금까지 내 코드입니다.
spawn telnet my_host
expect UserName {send admin\r}
expect PassWord [one of array passwords\r]
{if auth ok}
do something
{else}
try another password
expect -re #
send "logout\r"
expect eof
위의 목표를 달성하도록 도와주실 수 있나요?
답변1
어쩌면 다음과 같은 것일 수도 있습니다.
spawn telnet my_host
expect UserName
send "admin\r"
set passwords [list foo bar baz]
set connected false
foreach pw $passwords {
expect PassWord
send -- "$pw\r"
# change the "invalid password" pattern to whatever you need it to be.
expect {
"invalid password" {continue}
-re "#" {
set connected true
break
}
}
}
if {! $connected} {
error "no password succeeded"
}
send "logout\r"
expect eof