Expect 프로그램을 사용하여 원격 서버에 로그인하세요.

Expect 프로그램을 사용하여 원격 서버에 로그인하세요.

나는 원격 컴퓨터에 파일을 복사하려고 하는 Expect 프로그램(아래 참조)을 작성했습니다. 'ing하는 동안 scp잘못된 비밀번호를 제공하면 두 번째 조건이 충족되어 오류가 인쇄되고 프로그램이 종료될 것으로 예상됩니다.

그러나 결과적으로는 올바른 비밀번호를 입력했는지 여부에 관계없이 모든 조건을 충족하고 프로그램에서 오류가 발생하는 것입니다.

내가 여기서 뭔가 잘못하고 있는 걸까요? 어떤 도움이라도 대단히 감사하겠습니다.

spawn scp -p -o StrictHostKeyChecking=no $x $y ${toolpath}/cmd.sh $user@$ip:/x/home/$user
while (1) {
expect {
        "?assword:" {
                send_log "Password entered for scp'ing to $ip\n"
                send  "$password\n"
                }
        "Permission denied, please try again" {
                send_user "$ip : You have entered wrong password, Permission denied\n"
                exit 1
                }
        "timeout" {
                send_user "$ip : Failed to scp - timed out\n"
                exit 1
                }
        "lost connection" {
                send_user "$ip : Connection lost\n"
                exit 1
                }
        }
}

답변1

당신은 exp_continue암호 블록에서 길을 잃었습니다. 이는 실제로 예상 명령의 시작 부분으로 되돌아가므로 다른 모드 중 하나를 기다릴 수 있습니다.

그러나 진지하게 SSH 키 인증을 사용하십시오. 더 쉽습니다.

관련 정보