标签:备案 域名 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:babyfenei@qq.com
# 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 babyfenei@qq.com < /root/mailtitle
mail -s "西普数据备案周查结果" -a /root/beian.tar 31334014@qq.com < /root/mailtitle本公司的IP列表如下:
cat /root/ipset.conf 127.0.0.1/24 111.111.111.1/23
标签:备案 域名 ip
原文地址:http://babyfenei.blog.51cto.com/443861/1834649