shell脚本实例

#!/bin/bash

SRC_PATH=/mnt/source/xx/xx

# Merge all spec file for quick search
mergedSpec="./allSpec-"$(date +%Y%m%d).txt

function merge_all_specs(){
    allSpec=$(find $SRC_PATH -name *.spec)
    for specFile in $allSpec
    do  
        specName=$(basename $specFile)
        specPrefix=${specName%.*} 
        #echo $specName, echo ${specName%.*}
        prefix="${specPrefix}":"${specFile}:"
        #echo $prefix
        prefix=${prefix//\//\\\/}
        #echo $prefix
        cat $specFile | sed 's/^/'"$prefix"'&/g' >> $mergedSpec 
    done
}

if [ ! -f "$mergedSpec" ]; then
    merge_all_specs
fi

resultFile=$1-confirmed
:>$resultFile

cat $1 | while read LINE
do
    #echo $LINE | grep -ri CVE
    #if [ $? -ne 0 ]
    #then
    #    continue
    #fi

    sa=`echo $LINE | awk '{print $1}'`
    cves=`echo $LINE | awk '{for (i=2 ;i<=NF;i++) printf $i " "}'`

    for cve in $cves
    do
        #echo $cve
        grep -i $cve $mergedSpec >/dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo -e "$sa $cve:\t待确认"
            echo -e "$sa $cve:\t待确认" >> $resultFile
        else
                record=$(grep -ri $cve $mergedSpec)
        specFile=`echo ${record} | awk -F ':' '{print $2}'`

        comm_dir=`dirname $specFile`
                comm_specfile=`basename $specFile`

        comm=${comm_specfile%.*}
        #echo ${comm_dir}"->"${comm_specfile}

        if [ ! -d "${comm_dir}" ]
                then
                     continue
                fi
pushd ${comm_dir} >/dev/null 2>&1

                if [ -d ".git" ]
                then
                     commitmsg=`git blame ${comm_specfile} | grep -i $cve | head -1 | awk '{print $1}'`
                     #echo "----ID---"${commitmsg}
                else
                     echo -e "$sa $cve:\tNo find .git"
             popd >/dev/null 2>&1
                     continue
                fi
popd >/dev/null 2>&1

                # Remove all space
            version=`echo $version | sed s/[[:space:]]//g`
            release=`echo $release | sed s/[[:space:]]//g`

                # Special Cases


            echo -e "$sa $cve:\tMerged","\t"${comm%%:*}-${version##*:}-${release##*:}
            echo -e "$sa $cve:\tMerged","\t"${comm%%:*}-${version##*:}-${release##*:} >> $resultFile
        fi
    done
done

 

转载于:https://www.cnblogs.com/stellar/p/8623789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值