所以我有一个像这样的可以工作的期望脚本:
#!/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'
将引用整个文档。