例子,日志分析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.jbxue.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 | 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 NUMS\e[0m" cat $TMP_LOG_FILE | awk '{print $1}' | grep "1" |wc -l echo -e "\e[32;1mUSER NUMS\e[0m" cat $TMP_UNIQUE_FILE | awk '{print $1}' | grep "1" |wc -l echo -e "\e[33;1mCHECK_EXIST NUMS\e[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 |