#!/bin/bash
thread=$1
if [ "$1"x == ""x ] || [ "$2"x == ""x ]; then
echo "2 args: ./cmdb.sh thread cmdbfile"
exit 0
fi
CMDB_FILE_NAME=$2
RULES_FILE=rule.txt
rm -rf error correct no_rule
mkdir error
mkdir correct
mkdir no_rule
tmp_fifofile=/tmp/$.fifo
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
function func()
{
id=`echo $id | sed "s/"",/"kong",/g"`
TYPE=`echo $id | awk -F '["]' '{print $10}'`
NET=`echo $id | awk -F '["]' '{print $6}' |awk -F '[.]' '{print $1}'`
if [ "$NET"x = "10"x ]; then
NET=`echo $id | awk -F '["]' '{print $6}' |awk -F '[.]' '{print $1"."$2}'`
if [ "$NET"x = "10.62"x ] || [ "$NET"x = "10.63"x ] || [ "$NET"x = "10.64"x ]; then
NET=`echo $id | awk -F '["]' '{print $6}' |awk -F '[.]' '{print $1"."$2"."$3}'`
fi
fi
((++$i))
echo "$i - $NET - $TYPE"
RULE=`grep "^$NET\." $RULES_FILE | awk '{print $2}'`
if [ "$RULE"x = ""x ]; then
TMP=`echo $NET | awk -F '[.]' '{print $1}'`
if [ "$TMP"x = "10"x ]; then
RULE=$TYPE
echo $id >>no_rule/$NET.csv
else
RULE="外网"
fi
fi
if [ "$RULE"x != "$TYPE"x ]; then
echo $id >>error/$NET.csv
echo $id |sed "s/$TYPE/$RULE/g" >>correct/$NET.csv
fi
sleep 3
}
for ((i=0;i<$thread;i++));do
echo
done >&6
i=1
while read id;do
read -u6
{
func
echo >&6
} &
((i++))
done < $CMDB_FILE_NAME
wait
exec 6>&-
exit 0
|