前置:需有rwini的ini解析工具,可以直接上ci
ini配置
#注不要使用空格,shell数组识别会产生异常
#section为特性名称
#director为日志异常负责人
#dir为监控日志路径(绝对路径,多个路径用;隔开,可为目录也可为单个文件,若为目录,则寻找目录下suffix指定后缀所有文件)
#rule为匹配规则
#新特性在下发按照模板新增一个section即可
[特姓名]
director=负责人
dir=扫描目录
suffix=扫描后缀
rule=匹配规则
sh脚本
#!/bin/bash
get_ini_date()
{
chara=$(cat get_log.ini|egrep "\[.*\]")
array_chara=(${chara// / })
for chara in ${array_chara[@]}
do
chara1=${chara:1};chara2=${chara1%?}
#日志位置,多个日志使用;分开
dir=$(rwini -s $chara2 -k dir -f get_log.ini)
#日志后缀,多个后缀使用;分开
suffix=$(rwini -s $chara2 -k suffix -f get_log.ini)
#日志匹配规则,使用egrep匹配,多个规则使用;分开
rule=$(rwini -s $chara2 -k rule -f get_log.ini)
make_array
get_file_arr
get_match_log
done
}
make_array()
{
OLD_IFS="$IFS"
IFS=";"
array_dir=($dir)
array_suffix=($suffix)
array_rule=($rule)
IFS="$OLD_IFS"
}
get_file_arr()
{
unset file_arr
for dir in ${array_dir[@]}
do
if [ ! -d $dir ]; then
if [ ! -f $dir ];then
echo $dir is not existence
else
file_arr[${#file_arr[*]}]=$dir
fi
else
for suffix in ${array_suffix[@]}
do
file_list=`find $dir|grep "\.$suffix$"`
file_arr[${#file_arr[*]}]=$file_list
done
fi
done
}
get_match_log()
{
rm -rf ./res.txt
i=0
for file in ${file_arr[@]}
do
for rule in ${array_rule[@]}
do
if [[ $(cat $file|grep -e $rule) ]];then
echo "特性: $chara2" >> res.txt
director=$(rwini -s $chara2 -k director -f get_log.ini)
echo "负责人: $director" >> res.txt
echo "日志文件: $file" >> res.txt
res=$(cat $file|grep -e $rule)
echo "异常日志: $res" >> res.txt
((i++))
fi
done
done
}
main()
{
get_ini_date
if [ $i -eq 0 ];then
return 0
else
return 1
fi
}
main