
次の予想されるスクリプトがあります。
#!/usr/bin/expect
set timeout 20
set cmd "/path/vpntool --server 1.2.3.4:443 --vpnuser user"
set password [lindex $argv 0]
eval spawn $cmd
expect "VPN:"
send "$password\r";
interact
expect ".*\(Y\/N\)"
send "Y\r";
interact
スクリプトは「このサーバーに接続しますか?(Y / N)」という質問で停止し、答えを待ちます。
問題が何であるかを知っている人はいますか?
答え1
Expectは、ユーザーの指示に従って正確に行われます。
コマンドinteract
には終了条件がないため、この時点でスクリプトはユーザーに制御を与え、再度インポートしません。
Expectスクリプト中に対話型アクセスが必要な場合は、次を参照してください。Stack Overflow.SEのこの質問。スクリプトがどのように機能したいかによって、いくつかの回答が適用されることがあります。
スクリプトが完全に自動化され、スクリプトを起動した後にユーザー対話が必要ない場合は、このinteract
コマンドがあるのはなぜですか?