cronジョブでのSFTP

cronジョブでのSFTP

問題

  1. SFTP経由でファイルのダウンロードを自動化したい
  2. SFTPサーバーとキーメカニズムをセットアップしました
  3. 簡単なbashスクリプトを作成しました -スクリプト
  4. スクリプトのエントリをcronに追加しました

スクリプト、スクリプト:

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

スクリプトを手動で実行すると問題なく動作します(テキストファイルはホームディレクトリに保存されます)が、スクリプト(適切な権限がある場合)crontab何も起こりません。

crontab エントリ:

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

認証のために、ssh-keygenキーのセット (秘密、公開) を作成し、SFTP サーバーへの相互認証を設定していました。

keychainスクリプトの自動化には、パスワードなしの認証を使用しました。

現在

現在、私はスクリプトに位置する"ユーザー"ホームディレクトリ(/home/user/)。

手動で実行するとroot、スクリプトは SFTP サーバーからファイルを取得し、 に配置します/home/user/

ジョブから実行された場合、このアクションは実行されませんcron。 ではcronsftpコマンドはエラーを取得します。

アイデアは?

取り組んでいます

  1. 変更する変数をオンにしても/etc/crontab問題は解決しませんでした
  2. フルパスの指定スクリプト問題は解決しなかった
  3. 述べるパス変数スクリプト問題は解決しなかった
  4. コマンドからエラーを見つけましたsftp- それは255

ただし、スクリプトを手動で実行すると ( ./script.sh)、問題なく動作します...

答え1

実際の例:

hello.shテキスト ファイルに hello という単語を追加する、という名前の簡単なスクリプト(各コマンドにフル パスを使用)。

注記 myuserあなたのユーザー名です

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

スクリプトを実行可能にするには、chmod +x hello.sh

1 分ごとに実行される crontab エントリは、必要に応じて変更できます。

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

詳細:

  • 各 cron ジョブは、それを登録したユーザーとして実行されます。root ユーザーが cron ジョブを登録すると、このジョブは root 権限で実行されます。

  • 非 root ユーザーが cron ジョブを登録すると、このジョブは前述のユーザーの権限で実行されます。ジョブに root 権限が必要な場合は、非 root ユーザーによって開始されるため失敗します...

  • cron がコマンドとスクリプトを正しく見つけて呼び出せるように、完全なパスを使用してコマンドとスクリプトを呼び出すことをお勧めします。そうしないと、有用なフィードバックなしで失敗する可能性があります。

関連情報