cron에 의해 트리거된 bash 스크립트의 scp 시도는 스크립트를 수동으로 실행할 때 작동하지 않습니다.

cron에 의해 트리거된 bash 스크립트의 scp 시도는 스크립트를 수동으로 실행할 때 작동하지 않습니다.

cron이 예약한 bash 스크립트에서 scp 파일을 사용해 보세요. cron이 트리거하면 scp는 권한 거부 오류 메시지와 함께 실패합니다. 다음을 사용하여 스크립트를 수동으로 실행할 때:

/etc/scripts>  bash script3

scp 명령이 잘 작동합니다.

cron 작업 문제를 해결하는 방법에 대한 이전 질문에서 명령줄을 통해 수동으로 실행할 때와 cron을 통해 실행할 때 환경 변수가 다를 수 있다는 것을 배웠습니다. 그래서 제안된 문제 해결 팁 중 하나에 따라 cron을 통해 다음 작업을 예약했습니다.

lab-1:/etc/scripts# cat cronenvtest         
OFILE=/tmp/crons.environment                                      
(/usr/bin/whoami                                                  
/usr/bin/env ) > $OFILE 2>&1    

출력은 다음과 같습니다.

lab-1:/var/www/# tail -f /tmp/crons.environment
HOME=/root
RC_SVCNAME=crond
LOGNAME=root
RC_SERVICE=/etc/init.d/crond
TERM=screen
SVCNAME=crond
PATH=/bin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LANG=en.utf8
SHELL=/bin/sh
PWD=/root

명령줄에서 "env"를 실행하면 다음과 같습니다.

lab-1:/tmp# env                                            
SSH_CLIENT=10.1.1.1 57728 22                                                
USER=root                                                                        
MAIL=/var/mail/root                                                              
SHLVL=1                                                                          
OLDPWD=/etc/scripts                                                              
HOME=/root                                                                       
SSH_TTY=/dev/pts/4                                                               
PAGER=less                                                                       
PS1=\h:\w\$                                                                      
LOGNAME=root                                                                     
TERM=screen                                                                      
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin                
LANG=en.utf8                                                                     
SSH_AUTH_SOCK=/tmp/ssh-eGvX0isT3V/agent.22951                                    
SHELL=/bin/ash                                                                   
PWD=/tmp                                                                         
CHARSET=UTF-8                                                                    
SSH_CONNECTION=10.1.1.1 57728 10.2.2.2 22           

다음은 scp를 시도하는 스크립트의 줄입니다.

 scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null @$server:/tmp/"$server.db" "$dir/"

내가 지금까지 시도한 것

다음과 같이 루트 사용자를 포함하도록 scp 명령을 변경해 보았습니다.

scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$server:/tmp/$"server.db" "$dir/"

$dir 변수에서 "/tmp"와 같은 하드코드된 경로로 대상을 변경해 보세요.

bash 스크립트의 scp 바로 앞에 다음 줄을 추가해 보세요.

PWD=/etc/scripts

지금까지 이들 중 어느 것도 효과가 없었습니다. 어떤 팁이 있나요?

관련 정보