bashスクリプトcronjobが機能しない

bashスクリプトcronjobが機能しない

次のcronjobが機能しないのはなぜですか?手動で実行されたスクリプトが機能するため、cronジョブに入れても実行されません。

#--------Reports-------------
25 11 * * * /logs/scripts/chim/currbalance_dump.sh >> /logs/currbal.log

スクリプトは次のとおりです。

#!/bin/bash

sftp [email protected] << SFTP
cd /home/sftpadm/BanKo/CurrBalance/
mget banko_current_balance_`date +%Y%m%d`.csv /logs/Reports/BanKo/CurrBalance
SFTP
exit

フォルダは

/logs/scripts/chim/currbalance_dump.sh
-rwxrwxrwx 1 kycadm kycadm 174 Sep 29 09:43 currbalance_dump.sh

答え1

selinuxが問題ではないことを確認してください(rootとして):

audit2allow /var/log/audit/audit.log

問題に応じて、次のことを許可するポリシーを作成できます。

audit2allow -m local-log-script -o local-log-script.te /var/log/audit/audit.log 

スクリプトに必要なものだけを含めるように編集し、selinuxポリシーファイルを作成してインポートします。

checkmodule -M -m -o local-log-script.mod local-log-script.te
semodule_package -o local-log-script.pp -m local-log-script.mod
semodule -i local-log-script.pp

私は通常、これらすべてのファイルを次の場所に保存します。/etc/selinux/custom/

答え2

/etc/crontab ファイルへの読み取り/書き込みアクセス権があると仮定すると、タスク行に次のユーザー名を含める必要があります。

crontab -l -u username

    25 11 * * * username /logs/scripts/chim/currbalance_dump.sh >> /logs/currbal.log

ユーザー固有のクローンジョブスクリプトは/var/spool/cron/usernameにあります。

また、bashスクリプトに実行可能ビットが設定されており、スクリプトを実行しているユーザーが/logs/scripts/chim/ディレクトリにアクセスできることを確認してください。

 chmod +x currbalance_dump.sh

すべてのスクリプトを1つのディレクトリに配置し、run-partsユーティリティを使用してそのディレクトリ内のすべてのスクリプトを実行することもできます。

上記のすべてが正常な場合は、crondデーモンが実行されていることを確認してください。

service crond status
service crond start

新しいcronジョブが作成されるたびにcrondデーモンを再起動する必要はありません。

また、ユーザーがcronジョブを実行できることを確認してください。

less /etc/cron.allow
less /etc/cron.deny

関連情報