我公司使用創旗備案管理系統
近期因管局要求,對所有域名的備案信息進行覈查,檢查備案信息是否準確,是否存在備案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