[shell] 多程序指令碼分析CVE資料庫資訊
阿新 • • 發佈:2018-12-11
參考連結:
https://bg2bkk.github.io/post/shell%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%9E%E8%B7%B5/
$cat steps.sh rm -r output mkdir -p output #允許的程序數 THREAD_MAX=24 #$$是程序pid Pfifo="/tmp/$$.fifo" mkfifo $Pfifo #定義描述符為8848的管道 exec 8848<>$Pfifo rm -f $Pfifo #預先寫入指定數量的換行符,一個換行符代表一個程序 for ((i=0;i<$THREAD_MAX;i++)) do echo -ne "\n" 1>&8848 done for URL in `cat CVE_XML_urls`; do { CVE_in_XML=`basename $URL|sed -e "s/.gz$//g"`; wget $URL; gunzip -f $CVE_in_XML.gz echo $CVE_in_XML; perl convert-nvdcve $CVE_in_XML grep cpe $CVE_in_XML|grep product |sort|awk -F '<|>' '{ if($3!="") print $3 }' > $CVE_in_XML.cpe for cpe_entry in `cat $CVE_in_XML.cpe`; do { #程序控制 read -u 8848 { echo $cpe_entry; vendor=`echo $cpe_entry |awk -F ":" '{print $3}'` product=`echo $cpe_entry |awk -F ":" '{print $4}'` perl NVD_parser.pl $CVE_in_XML.db $CVE_in_XML.idx_cpe.db $cpe_entry >> output/$vendor.$product.urls; echo -ne "\n" 1>&8848 }& } done }& done wait #關閉管道 exec 8848>&- echo "\nDone"