프롬프트를 표시하기 전에 스크립트가 비밀번호를 보낼 것으로 예상합니다.

프롬프트를 표시하기 전에 스크립트가 비밀번호를 보낼 것으로 예상합니다.

expect원격 서버로 SSH를 자동화하기 위한 작은 스크립트를 작성했습니다 . 하지만 가끔 내 expect스크립트가 작동하지 않을 때가 있습니다. 실제로는 비밀번호 프롬프트 전에 비밀번호를 보냅니다. 이건 내 스크립트야

#!/usr/bin/expect -f
set password xyzzys
# now connect using ssh
set host [lindex $argv 0]
spawn ssh vivek.gagrani@$host
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
interact

이 스크립트를 실행할 때 가끔 다음과 같은 출력이 표시됩니다.

spawn ssh vivek.gagrani@bvdev429
xyzzys         ----> password sent before asking

vivek.gagrani@bvdev429's password:

이 문제를 해결하는 방법?

답변1

비밀번호를 보내는 데 10초 정도 걸리나요? 이는 일치하지 않는 패턴에 대한 기본 시간 초과이기 때문입니다.

명령 모드의 기본 모드 expect는 "glob"입니다. glob 모드는 점과 괄호를 특별히 처리하지 않습니다.

정규식을 지정하려면 다음을 사용하십시오.

expect -re "(.*)assword:"

관련 정보