我有以下脚本:
#!/usr/bin/expect
set timeout 20
set cmd [lrange $argv 1 end]
set password [lindex $argv 0]
eval spawn $cmd
while {1} {
expect "id_rsa"
send "$password\r";
}
interact
其目的是期望“id_rsa”并在生成的 $cmd 打开时重复输入密码。
现在脚本可以运行,但总是会以错误结束
send: spawn id expx not open while executing ...
我想以正确的方式编写代码,以便通过检查正确退出 while 循环,而不是通过 Expect 中的错误捕获正确退出,这样错误就不会出现。
提前致谢。
答案1
尝试改变
while {1} {
expect "id_rsa"
send "$password\r";
}
interact
到
expect {
id_rsa {
send "$password\r"
exp_continue ;# this is the "looping" part
}
eof
}