2

次のbashスクリプトは、毎日のPHPエラーログを含む電子メールを送信します。

#!/bin/bash
 
# phperrlog v1.0
# by vladimir prelovac http://www.prelovac.com/vladimir/
#
# parse error logs on your server and send you daily updates to email
  
# configure options
  EMAIL="tech@domain.com"
   
  WORKDIR="/var/scripts"
  TAIL=50  # number of entries to send
 # IGNORE="/backup" # path to ignore
    
# script starts 'ere
     
 cd $WORKDIR
 rm phperrlog.txt 2>/dev/null
      
 LIST=$(ls /var/log/apache2/*-error.log)
 today=$(date +%Y-%m-%d)
       
 for i in $LIST
  do
    if [ -f $i ]; then
       time=$(date -r $i +%F)
       if [ "$time" == "$today" ]; then
         echo $i >>phperrlog.txt
         echo "---------------------------------" >>phperrlog.txt
         tail -n $TAIL $i >>phperrlog.txt
         echo -e "\n\n\n\n" >>phperrlog.txt
       fi
    fi
 done
                                              
  if [ -f  phperrlog.txt ]; then
    mail -s "PHPERRORLOG SCRIPT: server error logs - $today" $EMAIL  < phperrlog.txt
  fi

このスクリプトを変更して、次のようなすべてのエラーを除外するにはどうすればよいですか。

[2012年8月2日木曜日10:54:33][エラー][クライアント12.345.67.89]オプションディレクティブによって禁止されているディレクトリインデックス:/ var / www / domain / public / templates / img /

[2012年8月2日木曜日11:25:35][エラー][クライアント12.345.67.89]サーバー構成によってクライアントが拒否されました:/var/www/domain/public/templates/sidebar.tpl

私はもっ​​と興味があります:

  • PHPの通知/警告/致命的なエラー
  • ファイルが存在しません
4

2 に答える 2

0

リダイレクトを置き換えてみてください

mail -s "PHPERRORLOG SCRIPT: server error logs - $today" $EMAIL  < phperrlog.txt

たとえば、プロセスとパイプを使用する

grep -v '\[error\]' < phperrlog.txt | mail -s "PHPERRORLOG SCRIPT: server error logs - $today" $EMAIL 

また

grep -v '\[error\]' phperrlog.txt | mail -s "PHPERRORLOG SCRIPT: server error logs - $today" $EMAIL 
于 2012-08-04T12:27:08.127 に答える