크론 작업의 SFTP

크론 작업의 SFTP

문제

  1. SFTP를 통해 파일 다운로드를 자동화하고 싶습니다.
  2. SFTP 서버와 키잉 메커니즘을 설정했습니다.
  3. 간단한 bash 스크립트를 만들었습니다.script.sh
  4. 스크립트를 위해 cron에 항목을 추가했습니다.

스크립트,script.sh:

#!/bin/bash  
sftp user@server:/home/user/file.txt  
exit 0

스크립트를 수동으로 실행하면 문제가 없지만(텍스트 파일은 홈 디렉터리에 저장됨)script.sh(적절한 권한이 있는 경우) crontab아무 작업도 수행하지 않습니다.

crontab 항목:

* * * * * /home/user/script.sh

인증을 위해 ssh-keygen키 세트(개인, 공개)를 만들고 SFTP 서버에 대한 교차 인증을 설정했습니다.

keychain스크립트 자동화를 위해 비밀번호 없는 인증을 사용했습니다 .

현재

현재 저는 다음과 같은 스크립트를 가지고 있습니다.script.sh에 위치"사용자"홈 디렉토리( /home/user/).

수동 으로 실행하면 root스크립트는 SFTP 서버에서 파일을 가져와 /home/user/.

작업 에서 실행할 때는 이 작업을 수행하지 않습니다 cron. 에서는 cron명령 sftp에 오류가 발생합니다.

아이디어?

작업 중

  1. 변경변수를 켜도 /etc/crontab문제가 해결되지 않았습니다.
  2. 전체 경로 명시script.sh문제를 해결하지 못했습니다
  3. 진술변수script.sh문제를 해결하지 못했습니다
  4. 명령 에서 오류를 발견했습니다 sftp.255

스크립트를 수동으로 실행하는 것( ./script.sh)은 여전히 ​​완벽하게 작동합니다.

답변1

실제 예:

hello.sh텍스트 파일에 hello라는 단어를 추가하는 간단한 스크립트 (각 명령에 대해 전체 경로 사용):

메모 myuser사용자의 이름입니다

#!/bin/bash
printf 'hello' >> /home/myuser/hello.txt

다음을 사용하여 스크립트를 실행 가능하게 만듭니다.chmod +x hello.sh

매분 실행되는 crontab 항목은 필요에 따라 변경할 수 있습니다.

* * * * * /home/myuser/hello.sh

일부 세부정보:

  • 각 크론 작업은 이를 등록한 사용자로 실행됩니다. 루트 사용자가 cron 작업을 등록하면 이 작업은 루트 권한으로 실행됩니다.

  • 루트가 아닌 사용자가 cron 작업을 등록하는 경우 이 작업은 앞서 언급한 사용자의 권한으로 실행됩니다. 작업에 루트 권한이 필요한 경우 루트가 아닌 사용자가 시작했기 때문에 실패합니다.

  • cron이 올바르게 찾아서 호출할 수 있도록 전체 경로를 사용하여 명령과 스크립트를 호출하는 것이 더 좋습니다. 그렇지 않으면 유용한 피드백 없이 실패할 수 있습니다.

관련 정보