当我简单地运行这些命令时,我遇到了一个问题。
由于第一次使用 scp 建立连接,远程服务器希望传递“yes”以将密钥添加到 RSA 文件中。
命令如下
#!/bin/bash
scp -P58222 root@IP:/root/K /N
/usr/bin/expect -c 'expect "\n" { expect "Are you sure you want to continue connecting (yes/no)?" }'
send "yes\r"
expect "$ "
send "exit\r"
实际上我必须yes
在展示时传递我的脚本
Are you sure you want to continue connecting (yes/no)?
我怎样才能摆脱这个问题..?
答案1
无需使用 Expect 编写响应脚本,只需在添加之前关闭提示即可。
scp -o "StrictHostKeyChecking no" ...
由于您expect
首先使用的是 ssh,因此我只想说ssh-copy-id
设置无密码 ssh 是一种更好的方法。
答案2
这是我的工作脚本的片段。
send_user "FILE \"FILETEMPL\" is copied to active.\n"
spawn scp -l 60 FILETEMPL root@IP:PATHTEMPL/FILETEMPL
# After scp we should wait "#" or "100%".
set timeout 600
expect {
"password: " {
send "PASS\r"
expect {
"100% " {...}
"password: " { .. }
timeout { ... }
}
}
timeout { exit 1 }
eof { exit 2 }
}