단순히 이 명령을 실행하면 문제가 발생합니다.
처음으로 scp를 사용하여 연결이 설정되므로 원격 서버는 RSA 파일에 키를 추가하기 위해 "yes"가 전달될 것으로 예상합니다.
명령은 다음과 같습니다
#!/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 }
}