K7AAYと0xSheepdogの提案に基づいてもう一度説明します。
grep
毎日特定の時間範囲内にファイルが転送されたときにログファイルを生成するbashスクリプトを作成する必要があります。
ファイル名は通常次のとおりです。YYYYMMDD_HHMMSS_SEND_FILENAME_TO_HOST.log
(このログファイルはCFTutil
ファイル転送アプリケーションによって生成されます。)
このログファイルには、実行できる次の文字列を見つけるスクリプトが必要です。
成功
ファイルがX回とY回の間で正常に送信されると、スクリプトは電子メールを送信する必要があります。 xとyの間にファイルが送信されない場合は、電子メールを送信する必要があります。 y以降にファイルを送信した場合、ファイルが送信されない場合はEメールを送信する必要があります。
次のスクリプトを実行できますが、詰まっていてこれが最善のアプローチだとは思わない。このスクリプトは1つのファイルのみを検索するため、15のファイルに対してこれを行う必要があります。
各ファイルのスクリプトを作成し、cronジョブを使用してスケジュールしますが、いつでも実行でき、その中の各ファイルのステータスレポートを受け取るように、すべてのタスクを1つのスクリプトで実行したいと思います。
現在のスクリプトは次のとおりです。
#!/bin/bash
dt=$(date +"%Y%m%d")
HHMM=$(date '+%H:%M')
if
find ./ -newermt "$dt 21:30:00" ! -newermt "$dt 23:50:00" -name "$dt_*SEND_FILE1_TO_HOST.log" -exec grep -i successful {} \;
then
# mail -s "File File1 Transmission Report" [email protected] <<< "File was generated and successfully sent at $HHMM";
echo "Sucess"
elif
find ./ -newermt "$dt 21:30:00" ! -newermt "$dt 23:50:00" -name "$dt_*SEND_FILE1_TO_HOST.log" -exec grep -i unsuccessful {} \;
then
# mail -s "File File1 Transmission Report" [email protected] <<< "File was generated but unsuccessfully sent at $HHMM";
echo "Error"
elif
find ./ -newermt "$dt 21:30:00" ! -newermt "$dt 23:50:00" -name "$dt_*SEND_FILE1_TO_HOST.log" -exec false {} \;
then
# mail -s "File File1 Transmission Report" [email protected] <<< "File not generated in due time Please verify ASAP";
echo "Not Found"
fi
newermt
動作しません。それでも時間の範囲内でファイルを検索する方法を見つけようとしています。
CFTUTILは、ホスト間のファイルの受信と配布を監視するためのツールです。ファイルディレクトリを継続的に監視し、ファイルが受信されたら展開してアーカイブします。これにより、各ホストのログが生成されます。
そのようなスクリプトをどのように作成できますか?