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:"