備案IP覈查自動腳本

我公司使用創旗備案管理系統

近期因管局要求,對所有域名的備案信息進行覈查,檢查備案信息是否準確,是否存在備案IP不在我公司的域名。

特做此腳本,自動從備案系統數據庫中查詢出所有備案IP並進行篩選。

此腳本只適用於創旗備案系統V3.0

使用此腳本錢請手動打開備案系統數據庫遠程訪問權限

此腳本爲shell腳本,請在linux系統內運行

# 備案準確率查詢腳本
# 本腳本通過自動查詢自動查詢備案系統數據庫中的備案域名,備案IP,及備案人的聯繫信息,
# 通過腳本逐行ping測每個域名,並將得出的目標IP與備案系統中的IP進行比較,將比較結果導出到相應表格
# 在目標IP與備案系統中的IP不同時,將目標IP與西普IP數據庫進行比較,比較此域名是否在西普的IP庫中。
# 將結果導出到相應表格。
# 此腳本將導出4個表格。
# ipdiff.csv 		====> 備案IP與目標IP不同的域名信息
# ipsame.csv 		====> 備案IP與目標IP相同的域名信息
# ipinsimpul.csv 	====> 備案IP在西普數據庫中的域名信息
# ipoutsimpul.csv 	====> 備案IP在西普數據庫中的域名信息


  
#使用以下命令添加crontab自動下載列表 我這裏添加的是每週二 00:01分運行腳本。添加完成後重啓crond服務
#我這裏將腳本文件保存在cacti文件夾中的file文件夾中,爲了安全,可將腳本保存在別處,並在apache中添加虛擬目錄,進行文件瀏覽。
# echo "01 01  * * 2 root  /root/ipquery.sh > /dev/null 2>&1" > /etc/cron.d/export
  
# 陝西西普數據通信股份有限公司 運行與維護部
# By:Fenei  2016年8月1日
# QQ:407603129 EMAIL:[email protected]
# http://babyfenei.blog.51cto.com
  
#!/bin/bash
DBHOST="備案服務器IP"
USERNAME="數據庫用戶名"           #數據庫用戶名
PASSWORD="數據庫密碼"    #數據庫密碼
DBNAME="trunkeydb"            #Cacti使用的數據庫名稱                              
MYSQL_CMD="mysql  -h${DBHOST} -u${USERNAME} -p${PASSWORD}"
  

rm  /root/beian.tar
rm  /tmp/url.csv    #刪除舊的下載列表文件
rm  /tmp/beian/ipdiff.csv    #刪除舊的下載列表文件
rm  /tmp/beian/ipsame.csv    #刪除舊的下載列表文件
rm  /tmp/beian/ipinsimpul.csv 
rm  /tmp/beian/ipoutsimpul.csv

mkdir -p /tmp/beian/
echo "DOMAIN","ICPIP","$DESTIP","ICPTEL","ICPMB","$ICPMAIL">> /tmp/beian/ipdiff.csv
echo "DOMAIN","ICPIP","$DESTIP","ICPTEL","ICPMB","$ICPMAIL">> /tmp/beian/ipsame.csv
echo "DOMAIN","ICPIP","$DESTIP","ICPTEL","ICPMB","$ICPMAIL">> /tmp/beian/ipinsimpul.list
echo "DOMAIN","ICPIP","$DESTIP","ICPTEL","ICPMB","$ICPMAIL">> /tmp/beian/ipoutsimpul.list

select_db_sql="select  a.Syurl,b.Qsip,a.Fzr_dhhm,a.Fzr_sjhm,a.Fzr_dzyj from tab_icpweb a LEFT JOIN tab_icpip b on a.IspWzid=b.IspJrid;"
#通過數據庫查詢出備案系統中經過備案的域名,IP,姓名,電話,手機,郵箱
echo ${select_db_sql}  | ${MYSQL_CMD}  ${DBNAME}    > /tmp/url.csv
if [ $? -ne 0 ]
then
 echo "select databases ${DBNAME} failed ..." >>/var/log/export/log              #數據庫查詢失敗時將添加失敗日誌到日誌文件中
fi

sed -i 's/;/\n/g' /tmp/url.csv    												 #將URL列表中的域名調整爲單列 
  
  
cat /tmp/url.csv | awk 'NR>1' | while read ICPURL ICPIP  ICPDH ICPSJ ICPYJ		#逐行讀取url.csv中的每列數值並賦值到變量
 
       do
		IPA=$(ping $ICPURL -c 1 | awk '{print $3}'|head -1)						#獲取域名解析的IP地址
		IPB=${IPA//(/}	
		DESTIP=${IPB//)/}														#刪除解析IP地址中的括號符號
		if [ "$DESTIP" !=  "$ICPIP" ];then										#判斷解析IP地址與備案系統中的IP地址是否相同
		echo "$ICPURL","$ICPIP","$DESTIP","$ICPDH","$ICPSJ","$ICPYJ">> /tmp/beian/ipdiff.csv						#導出解析IP與備案IP不同的域名
		
		#此部分位判斷解析IP是否在西普IP庫中
		while read MASK															
		do
			min=`/bin/ipcalc -n $MASK|awk -F"=" '{print $2}'`											#獲取IP庫中每行子網的最小IP
			max=`/bin/ipcalc -b $MASK|awk -F"=" '{print $2}'`											#獲取IP庫中每行子網的最大IP
			MIN=`echo $min|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`			
			MAX=`echo $max|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
			IPvalue=`echo $DESTIP|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`		#此三行將IP地址又點分十進制轉換位普通數值
			if [ "$IPvalue" -gt "$MIN" ] && [ "$IPvalue" -lt "$MAX" ]									#判斷解析IP是否在IP庫的子網範圍內
			then         
			echo "$ICPURL","$ICPIP","$DESTIP","$ICPDH","$ICPSJ","$ICPYJ">> /tmp/beian/ipinsimpul.list
			else
			echo "$ICPURL","$ICPIP","$DESTIP","$ICPDH","$ICPSJ","$ICPYJ">> /tmp/beian/ipoutsimpul.list
			fi
		done</root/ipset.conf																					#ipset.conf 爲西普IP庫文件
		else
		 echo "$ICPURL","$ICPIP","$DESTIP","$ICPDH","$ICPSJ","$ICPYJ">> /tmp/beian/ipsame.csv
		fi	
        done
sort -u /tmp/beian/ipinsimpul.list > /tmp/beian/ipinsimpul.csv														
sort -u /tmp/beian/ipoutsimpul.list > /tmp/beian/ipoutsimpul.csv
rm  /tmp/beian/ipinsimpul.list
rm  /tmp/beian/ipoutsimpul.list													#刪除導出列表中重複的行



tar zcvf /root/beian.tar /tmp/beian/
mail -s  "西普數據備案周查結果" -a /root/beian.tar [email protected] < /root/mailtitle
mail -s  "西普數據備案周查結果" -a /root/beian.tar [email protected] < /root/mailtitle

本公司的IP列表如下:

cat /root/ipset.conf
127.0.0.1/24
111.111.111.1/23


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章