배송 후 동결 예상

배송 후 동결 예상

다음 스크립트를 사용하여 Alpine Linux 설치를 자동화하려고 합니다.

expect <<- EOF
    set timeout -1
    spawn setup-disk -e -m sys /dev/sda
    expect {
        {WARNING: Erase the above disk(s) and continue? (y/n) \[n\] } {
            send "y\r"
            exp_continue
        }
        "Enter passphrase for /dev/sda3: " {
            send -- "helloworld\r"
            exp_continue
        }
        "Verify passphrase: " {
            send -- "helloworld\r"
            exp_continue
        }
    }
    expect eof
EOF

문제는 스크립트가 두 번째 프롬프트에 도달할 때마다 비밀번호를 전송하지만 더 이상 계속할 수 없고 다음 프롬프트를 표시하지 않고 정지된다는 것입니다.

답변1

"비밀번호 확인" 이후에 더 이상 상호 작용이 없다고 가정하고 몇 가지 작은 변경을 수행합니다.

expect <<- EOF
    set timeout -1
    spawn setup-disk -e -m sys /dev/sda
    expect {
        {WARNING: Erase the above disk(s) and continue? (y/n) \[n\] } {
            send "y\r"
            exp_continue
        }
        "Enter passphrase for /dev/sda3: " {
            send -- "helloworld\r"
            exp_continue
        }
        "Verify passphrase: " {
            send -- "helloworld\r"
            # removing `exp_continue`
            # the `expect` command then ends here
        }
    }
    # not `expect eof`, but
    interact
EOF

이제 생성된 프로그램이 무엇을 하는지 볼 수 있을 것입니다.

관련 정보