设为首页 收藏本站
查看: 825|回复: 0

shell脚本:脚本分析汇总ping日志文件

[复制链接]

尚未签到

发表于 2018-8-27 13:13:40 | 显示全部楼层 |阅读模式
#!/bin/bash  
# check ping result
  
# by colin
  
# on 2016-06-08
  
########################################
  
# 功能说明:该脚本用于分析汇总某项目在线ping日志文件
  
#
  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  
LOGNAME='data/store/logs/record/ping.log'
  
GREPKEY='ping statistics'
  
WORKDIR='/tmp/checkPingResult'
  
TEMPPINGFILE="${WORKDIR}/temppingfile.txt"
  
CHECKRESULT="${WORKDIR}/temp_check_result.txt"
  

  
EMAIL=(
  
    colin@邮件地址.cn
  
)
  

  
TRAIN_CTZX=(
  
    k1364_k817:cdyd:ctzx_42
  
    k1364_k817:cdyd:ctzx_58
  
    k1364_k817:cdyd:ctzx_49
  
    k1364_k817:cdyd:ctzx_56
  
    k1364_k817:cdyd:ctzx_55
  
    k1364_k817:cdyd:ctzx_59
  
    k1364_k817:cdyd:ctzx_39
  
    k1364_k817:cdyd:ctzx_22
  
    k1364_k817:cdyd:ctzx_46
  
    k1364_k817:cdyd:ctzx_36
  
    k1364_k817:cdyd:ctzx_27
  
    k1364_k817:hrbdx:ctzx_26
  
    k1364_k817:hrbdx:ctzx_1
  
    k1364_k817:cddx:ctzx_51
  
    k1364_k817:cddx:ctzx_40
  
    k351_k352:cdyd:ctzx_2
  
    k351_k352:cdyd:ctzx_4
  
    k351_k352:cdyd:ctzx_5
  
    k351_k352:cdyd:ctzx_8
  
    k351_k352:cdyd:ctzx_9
  
    k351_k352:cdyd:ctzx_10
  
    k351_k352:cdyd:ctzx_12
  
    k351_k352:cdyd:ctzx_13
  
    k351_k352:cdyd:ctzx_14
  
    k351_k352:cdyd:ctzx_15
  
    k351_k352:cdyd:ctzx_16
  
    k351_k352:cdyd:ctzx_17
  
    k351_k352:cdyd:ctzx_19
  
    k1223_k1224:hrbdx:ctzx_33
  
    k1223_k1224:hrbdx:ctzx_34
  
    k1223_k1224:cddx:ctzx_41
  
    k1223_k1224:cddx:ctzx_47
  
    k1223_k1224:cddx:ctzx_54
  
    k1223_k1224:cdyd:ctzx_23
  
    k1223_k1224:cdyd:ctzx_38
  
    k1223_k1224:cdyd:ctzx_45
  
    k1223_k1224:cdyd:ctzx_48
  
    k1223_k1224:cdyd:ctzx_50
  
    k1223_k1224:cdyd:ctzx_60
  
)
  

  
sendEmail(){
  
    TEMP_EMAIL_FILES=$1
  
    [ $(wc -l ${TEMP_EMAIL_FILES}|awk '{print $1}') -eq 0 ] || {
  
        for i in ${EMAIL[@]}
  
        do
  
            dos2unix -k ${TEMP_EMAIL_FILES}
  
            mail -s "${HOSTNAME}: CTZX CHECK PING RESULT" ${i} < ${TEMP_EMAIL_FILES}
  
        done
  
    }
  
    [ -e ${TEMP_EMAIL_FILES} ] && rm ${TEMP_EMAIL_FILES}
  
}
  

  
[ -d ${WORKDIR} ] && rm ${WORKDIR} -rf
  
[ -f ${CHECKRESULT} ] && rm ${CHECKRESULT}
  
mkdir -p ${WORKDIR}/temp/ && cd ${WORKDIR} && {
  
    for TARFILE in $(find /home/upload/ctzx/ct_tongji/ -name 'pinglog.tar.gz')
  
    do
  
        DEVNAME=$(echo "${TARFILE}"|awk -F/ '{print $(NF-1)}')
  
        for T_DEV_ID in ${TRAIN_CTZX[@]}
  
        do
  
            TRAIN_ID=$(echo ${T_DEV_ID}|awk -F: '{print $1}')
  
            CARD_ID=$(echo ${T_DEV_ID}|awk -F: '{print $2}')
  
            DEV_ID=$(echo ${T_DEV_ID}|awk -F: '{print $3}')
  
            [ ${DEVNAME} = ${DEV_ID} ] && break
  
        done
  
        TARFILENAME=$(echo "${TARFILE}"|awk -F/ '{print $NF}')
  
        cp ${TARFILE} .
  
        tar -zxf ${TARFILENAME} && rm -f ${TARFILENAME}
  
        ##
  
        # 加-n参数添加行号,-A 2取出的数据,有遇到第三行为空的情况
  
        #
  
        grep -n -A 2 "${GREPKEY}" ${LOGNAME}|grep -v "${GREPKEY}"|sed -r 's/[^0-9\.]+/ /g'|sed 's/^ //g'|grep -v "^$" |awk '{$1="";print $0}' > ${TEMPPINGFILE}
  
        PACKETS_TRANSMITTED=$(sed -n 'p;n' ${TEMPPINGFILE}|awk '{sum+=$1} END {print sum}')
  
        PACKETS_RECEIVED=$(sed -n 'p;n' ${TEMPPINGFILE}|awk '{sum+=$2} END {print sum}')
  
        PACKET_LOSS=$(sed -n 'p;n' ${TEMPPINGFILE}|awk '{sum+=$3} END {print sum/NR}')
  
        PING_MIN=$(sed -n 'n;p' ${TEMPPINGFILE}|grep -vE "([0-9]{1,3}\.){3}" |awk '{print $1}' |sort -n|uniq|sed -n '1p')
  
        PING_AVG=$(sed -n 'n;p' ${TEMPPINGFILE}|grep -vE "([0-9]{1,3}\.){3}"|awk '{sum+=$2} END {print sum/NR}')
  
        PING_MAX=$(sed -n 'n;p' ${TEMPPINGFILE}|grep -vE "([0-9]{1,3}\.){3}" |awk '{print $3}' |sort -n|uniq|sed -n '$p')
  
        echo "${PACKETS_TRANSMITTED},${PACKETS_RECEIVED},${PACKET_LOSS},${PING_MIN},${PING_AVG},${PING_MAX}" >> ${WORKDIR}/temp/${TRAIN_ID}_a_${CARD_ID}
  
        [ -f ${TEMPPINGFILE} ] && rm ${TEMPPINGFILE}
  
    done
  
}
  

  
groupPingResult(){
  
    CHECKFILENAME=$1
  
    PACK_SENT_ALL=$(awk -F, '{sum+=$1} END {print sum}' ${CHECKFILENAME})
  
    PACK_RECEIVE_ALL=$(awk -F, '{sum+=$2} END {print sum}' ${CHECKFILENAME})
  
    PACK_LOSS_AVG=$(printf %0.2f $(awk -F, '{sum+=$3} END {print sum/NR}' ${CHECKFILENAME}))
  
    PING_MIN_AVG=$(printf %0.2f $(awk -F, '{sum+=$4} END {print sum/NR}' ${CHECKFILENAME}))
  
    PING_AVG_AVG=$(printf %0.2f $(awk -F, '{sum+=$5} END {print sum/NR}' ${CHECKFILENAME}))
  
    PING_MAX_AVG=$(printf %0.2f $(awk -F, '{sum+=$6} END {print sum/NR}' ${CHECKFILENAME}))
  
    ALL_RESULT="${PACK_SENT_ALL},${PACK_RECEIVE_ALL},${PACK_LOSS_AVG},${PING_MIN_AVG},${PING_AVG_AVG},${PING_MAX_AVG}"
  
}
  

  
cd ${WORKDIR}/temp/ && {
  
    for i in $(find . -name "*_a_*")
  
    do
  
        TRAINCARD=$(echo $i | awk -F/ '{print $NF}')
  
        groupPingResult ${TRAINCARD}
  
        TRAINCARD_NAME=$(echo ${TRAINCARD} | sed 's/_a_/,/g')
  
        echo "${TRAINCARD_NAME},${ALL_RESULT}" >> ${CHECKRESULT}
  
        [ -f ${TRAINCARD} ] && rm ${TRAINCARD} -f
  
    done
  
    cat ${CHECKRESULT}|sort -n -t, -k5 > ${WORKDIR}/check_result.txt
  
    sed -i '1i车次,卡类型,总发送包,总接收包,丢失率,PING_MIN,PING_AVG,PING_MAX' ${WORKDIR}/check_result.txt
  
    #cat ${CHECKRESULT}|sort -n -t, -k5 > ${WORKDIR}/t_check_result.txt
  
    #sed -i '1i车次,卡类型,总发送包,总接收包,丢失率,PING_MIN,PING_AVG,PING_MAX' ${WORKDIR}/t_check_result.txt
  
    #column -s, -t ${WORKDIR}/t_check_result.txt > ${WORKDIR}/check_result.txt
  
    #[ -f ${WORKDIR}/t_check_result.txt ] && rm ${WORKDIR}/t_check_result.txt
  
    [ -f ${CHECKRESULT} ] && rm ${CHECKRESULT}
  
    sendEmail ${WORKDIR}/check_result.txt
  
}



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-557356-1-1.html 上篇帖子: shell脚本:mysql全备与binlog增量备份 下篇帖子: shell编程之if判断
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表