cronjob에 scp가 표시되도록 할 것이므로 다른 서버에 대해서는 자동 입력 비밀번호를 사용하는 것이 좋습니다.
sshpass -p 'your_password' scp [email protected]:/usr/etc/Output/*.txt /usr/abc/
이 스크립트는 저에게 작동하지 않습니다. 저는 Solaris를 사용하고 있습니다.
답변에 대한 설명도 표시해 주십시오. 감사해요.
추가의
나는 사용했다
#!/usr/local/bin/expect -f
spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/TEST1.*.txt dash@MYSERV:/apps/DASHBOARD/xx/xxx1/"
expect "*Password:*"
send "pass123\r"
interact
spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/SAMP1.*.txt* dash@MYSERV:/apps/DASHBOARD/xx/samp1/"
expect "*Password:*"
send "pass123\r"
interact
CRONJOB에 넣었습니다. 이 스크립트를 수동으로 실행하면 작동하지만 CRONJOB에 이 스크립트를 설정하면 두 번째 scp에서는 계속되지 않습니다.
도와주세요.
답변1
하드 카피 비밀번호를 보관/유지하지 않으려면 공개 키 인증을 사용하여 연결하세요. 공개 키 인증 연결을 설정하기 위해 로컬 사용자 콘텐츠를 id_rsa.pub
원격 사용자 파일에 복사합니다.~/.ssh/authorized_keys
여전히 비밀번호를 사용하고 싶다면 아래와 같이 예상 스크립트를 만들고 합계 user
와 server
비밀번호 가 일치하도록 예상 스크립트의 두 번째 줄을 변경할 수 있습니다 MY_PASSWORD
.
spawn scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/
expect "[email protected]\'s password:"
send "MY_PASSWORD\r"
interact
게시해 주신 @pynexj에게 감사드립니다.StackOverFlow에 대한 링크다음과 같이 스크립트를 수정해야 했습니다.
#!/usr/bin/expect -f
spawn scp /TEST1.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof
spawn scp /TEST2.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof
exit
노트전송해야 할 파일이나 패턴이 여러 개인 경우 SFTP의 배치 모드 사용을 고려해 볼 수도 있습니다.
답변2
하드 드라이브에 대한 기밀성을 허용하는 경우 홈 .ssh 폴더에 있는 키를 사용하여 비밀번호 확인을 건너뛸 수 있습니다. 이는 비대화형, 기계 간 인증입니다.
답변3
이것을 시도하기 전에 scp에서 정규식 인용문을 사용해야 하므로 이것이 실패 지점이 될 가능성이 높습니다.
sshpass -p 'your_password' scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/