これが私の目標です(スクリプトを書いていないだけで、アイデアだけです)。
いくつかのログやファイルを開きます(例
/opt/log/applications.log
:)「エラー(または他の人、私が見つけることができるもの)」を含むすべての行を見つけます。ただし、今日の日付のみを検索します(実際の日付のみ該当 - 例:23.03.2017 00 00〜23.03.2017 23 59)
この行が見つかったら、「ERROR」(前後の全行)はどこにありますか? > Create file.txt>すべての行をその中に入れます>このファイルを次に電子メールで送信します。[Eメール保護]>
私のスクリプトは次のとおりです(まだ完了していません)。
#!/bin/bash
# Store path to commands
LOGGER=/usr/bin/logger
FILE=/opt/app/ebanking/logs/bussines.log
# Store email settings
AEMAIL="[email protected]"
ASUB="ERROR LINE - $(hostname)"
AMESS="Warning - errors found on $(hostname) @ $(date). See log file for the details /opt/app/ebanking/logs/error.log"
OK_MESS="OK: NO ERROR Found."
WARN_MESS="ERROR: Error Found."
# Check if $FILE exists or not
if test ! -f "$FILE"
then
echo "Error - $FILE not found or mcelog is not configured for 64 bit Linux systems."
exit 1
fi
# okay search for errors in file
error.log=$(grep -c -i "ERROR" $FILE)
# error found or not?
if [ $error.log -gt 0 ]
then # yes error(s) found, let send an email
echo "$AMESS" | email -s "$ASUB" $AEMAIL
else # naa, everything looks okay
echo "$OK_MESS"
fi
答え1
cat $filename | grep ERROR | grep "23\.03\.2017" > file.txt
電子メールを送信するためのコマンドラインツールについてはわかりません。通常、電子メールfile.txtのみを使用します。これを試す前に、パイプとgrepの使い方の基本を知っておく必要があります。多くの学習資料があります。
グレブ:https://www.youtube.com/watch?v=o1C2Fqjrqgs
探す:https://www.youtube.com/watch?v=peM8bpmTfTE
大きな打撃:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
ちょっと待って、読んで学ぶ