私はリモートコンピュータにファイルをコピーしたいExpectプログラム(下記参照)を書いています。 'ing中にscp
間違ったパスワードを指定すると、2番目の条件が満たされ、エラーが印刷され、プログラムが終了することが予想されます。
しかし、結果として、正しいパスワードを入力したかどうかにかかわらず、すべての条件を満たし、プログラムでエラーが発生します。
私がここで何か間違っているのでしょうか?どんな助けでも大変感謝します。
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キー認証を使用してください。より簡単です。