スクリプトによるcrontabとscpファイルの転送

スクリプトによるcrontabとscpファイルの転送

ログ管理サーバーからログをエクスポートし、これらのエクスポートをアーカイブサーバーに送信するスクリプトがあります。

このスクリプトを手動で実行すると、問題なく操作が完了します。エクスポートをダウンロードし、ファイルを別のサーバーに送信します。問題は、このワークフローを自動化するためにcronjobを作成すると、ログ管理サーバーからファイルをダウンロードするだけで、ファイルをマイアーカイブサーバーに送信できないことです。

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

#!/bin/bash

/opt/splunk/bin/splunk search "(sourcetype=*) earliest=-15m" -output rawdata -maxout 0 > /opt/access_archive/archive_ALL_EXPORTS.dmp

cdate=$(date +"%Y%m%d_%H%M%S")
shopt -s extglob
exported_file=archive_ALL_EXPORTS.dmp
mv "$exported_file" "${cdate}_$exported_file"
scp ${cdate}_$exported_file root@<IP_ADDRESS>:/root

スクリプトが示すように、archive_ALL_EXPORTS.dmpというdmpファイルをダウンロードし、ファイル名に正しい日付/時刻プレフィックスを追加しました。 scpを使用してこのファイルを送信しようとすると、何もしません。

クローンタブは次のとおりです。

* * * * * /usr/bin/bash /opt/access_archive/export.sh

私も次のことを試しました。

* * * * * /opt/access_archive/export.sh

また、cronはbin / bashを使用します:(/ etc / crontab)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

編集する:

また、エスケープ文字でエラーが発生した場合に備えて、このスクリプトを試してみましたが、結果は同じです。

#!/bin/bash

/opt/splunk/bin/splunk search "(sourcetype=*) earliest=-15m" -output rawdata -maxout 0 > /opt/access_archive/archive_ALL_EXPORTS.dmp

scp archive_ALL_EXPORTS.dmp root@<IP_ADDRESS>:/root

答え1

エスケープ文字などは必要ありません。次のコマンドのようにファイルのフルパスを提供することを忘れました。その後は効果がありました。

mv "/opt/access_archive/$exported_file" "/opt/access_archive/${cdate}_$exported_file"

関連情報