我编写了一个期望程序(请参阅下文:),我试图将文件复制到远程计算机。在scp
'ing 时,如果我提供了错误的密码,我的期望是满足第二个条件并打印错误,程序将退出。
然而,最终发生的事情是,无论我是否提供正确的密码,它都满足所有条件并且程序出错。
我在这里做错了什么吗?任何帮助将非常感激。
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
在密码块中丢失了。这实际上会循环回到expect命令的开头,这样你就可以等待其他模式之一。
但认真地说,使用 ssh 密钥身份验证。这更容易。