使用 -c 参数时 Expect 不起作用

使用 -c 参数时 Expect 不起作用

所以我有一个像这样的可以工作的期望脚本:

#!/usr/bin/expect
spawn scp [email protected]:* .
expect {
password: {send "mypassword"; exp_continue}
}

根据 expect 的手册页,我认为我应该能够从命令行执行此操作来完成相同的操作

expect -c "spawn scp [email protected]:* ." -c "expect {password: {send \"mypassword\\r\"; exp_continue}}"

但这又回到了终端

spawn scp [email protected]:* .
[email protected]'s password: 

然后几秒钟后就放弃,没有出现错误消息,并且不执行任何操作。

笔记

是的,我很清楚我不应该使用 scp 来执行此操作,而应该使用密钥。

答案1

我不确定,但我怀疑多个-c参数是问题所在。您可以使用此处的文档在 stdin 上传递脚本:

expect <<'END'
spawn scp [email protected]:* .
expect {
password: {send "mypassword"; exp_continue}
}
END

第一个单引号'END'将引用整个文档。

相关内容