스크립트를 사용하여 한 서버에서 다른 서버로 파일을 보내고 싶습니다. 비밀번호가 있는데 스크립트에 비밀번호를 어떻게 전달합니까? 저는 솔라리스 5.10을 사용하고 있습니다.
답변1
스크립트에 비밀번호를 사용하는 것은 권장되지 않습니다. 대신 SSH 키를 사용하여 비밀번호 없이 로그인할 수 있습니다.
스크립트를 실행 중인 머신에서 실행하여 ssh-keygen
키 파일을 생성합니다. 모든 질문에 대해 Enter 키를 누르면 기본 설정이 제대로 작동합니다. 키 파일이 있으면 .key 파일을 사용하여 다른 서버에 복사할 수 있습니다 ssh-copy-id other.server
. 그러면 파일이 올바르게 설치되어 로그인할 수 있습니다. ssh-copy-id
비밀번호를 묻는 메시지가 표시됩니다. 지금 다른 서버에 연결 ssh
하거나 연결 하려고 하면 scp
더 이상 비밀번호가 필요하지 않습니다.
여전히 스크립트에 비밀번호를 입력하는 것이 유일한 옵션이라고 생각한다면(그렇지도 않고 그렇게 해서도 안 됩니다) expect
메시지가 표시될 때 비밀번호를 입력하는 스크립트를 작성할 수 있습니다.ssh
scp
답변2
이 예상 스크립트를 사용할 수 있습니다
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
#Source File Path
set source [lindex $argv 3]
#Destination Path
set dest [lindex $argv 4]
spawn bash -c "scp $source $user@$ip:$dest"
expect "password:"
send "$password\r"
interact