一个日志分析shell脚本实例代码

发布时间:2020-05-26编辑:脚本学堂
用于日志分析的shell脚本,可以同步远程服务器日志,可以用于分析nginx日志、apache日志、iis日志等,有研究shell脚本日志分析的朋友可以参考下。

例子,日志分析shell/ target=_blank class=infotextkey>shell脚本
 

复制代码 代码示例:
#!/bin/sh
#显示脚本说明,不同颜色
echo -e "e[34;1m################################################e[0m"
echo -e "e[34;1m### Format like 'Analysis_log.sh             ###e[0m"
echo -e "e[34;1m### Default Parameters is Today              ###e[0m"
echo -e "e[34;1m################################################e[0m"
# www.jb200.com
#rsync 的密码
RSYNC_PASSWORD=ssoapi96
export RSYNC_PASSWORD
#获得参数个数
var_parm_num=$#
#定义临时文件名
TMP_LOG_FILE=/tmp/api.log
TMP_UNIQUE_FILE=/tmp/tmp.log
#检查参数情况,并且得出一系列临时日志文件
if [ $var_parm_num -eq 0 ]; then
        today=`date +%Y-%m-%d`
        LOGFILE=api_log.$today
        LOGFILE96=/tmp/96_api_log.$today
        LOGFILE97=/tmp/97_api_log.$today
        LOGFILE98=/tmp/98_api_log.$today
        LOGFILE99=/tmp/99_api_log.$today
else
        LOGFILE=api_log.$1
        LOGFILE96=/tmp/96_api_log.$1
        LOGFILE97=/tmp/97_api_log.$1
        LOGFILE98=/tmp/98_api_log.$1
        LOGFILE99=/tmp/99_api_log.$1
fi
#获得日志文件(本机,远程)
cp /data/log/api/$LOGFILE $LOGFILE96
rsync -vzrtopg  web@172.24.139.97::apilog/$LOGFILE $LOGFILE97
rsync -vzrtopg  web@172.24.139.98::apilog/$LOGFILE $LOGFILE98
rsync -vzrtopg  web@172.24.139.99::apilog/$LOGFILE $LOGFILE99
#将不同服务器上的日志文件输入到一个文件中,只去其中的3、4列,去除其中含有关键字的行
cat $LOGFILE96 | linuxjishu/13830.html target=_blank class=infotextkey>awk '{print $3,"t" $4}'| grep -v "SSO_Send" > $TMP_LOG_FILE
cat $LOGFILE97 | awk '{print $3,"t" $4}'| grep -v "SSO_Send" >> $TMP_LOG_FILE
cat $LOGFILE98 | awk '{print $3,"t" $4}'| grep -v "SSO_Send" >> $TMP_LOG_FILE
cat $LOGFILE99 | awk '{print $3,"t" $4}'| grep -v "SSO_Send" >> $TMP_LOG_FILE
#对全部日志的文件进行过滤排序,去掉重复记录,输入到另一个文件中
sort -u $TMP_LOG_FILE > $TMP_UNIQUE_FILE
#输出当前时间
echo -e "e[35;1m"`date +%Y-%m-%d %H:%M:%S`"e[0m"
#计算某些动作的行数,既是该动作的数量
echo -e "e[36;1mLOGIN NUMSe[0m"
cat $TMP_LOG_FILE | awk '{print $1}' | grep "1" |wc -l
echo -e "e[32;1mUSER NUMSe[0m"
cat $TMP_UNIQUE_FILE | awk '{print $1}' | grep "1" |wc -l
echo -e "e[33;1mCHECK_EXIST NUMSe[0m"
cat $TMP_LOG_FILE | awk '{print $1}' | grep "2" |wc -l
#删除临时日志文件
rm $TMP_LOG_FILE
rm $TMP_UNIQUE_FILE
rm $LOGFILE96
rm $LOGFILE97
rm $LOGFILE98
rm $LOGFILE99