Version:20180419
#!/bin/bash
###############DNS拨测脚本 V1 20180419
###############By PlatoWG
##备份原resolv.conf文件
/bin/cp /etc/resolv.conf /etc/resolv.conf.back
##脚本主体
success=0
fail=0
read -p "请输入拨测次数:" num
echo "nameserver 114.114.114.114" > /etc/resolv.conf
for i in `seq 1 $num`
do
NO=`curl -I http://www.caict.ac.cn/|grep -w HTTP|grep -w HTTP|awk '{print $2}'` &> /dev/null
clear;echo "第${i}次拨测,HTTP返回状态$NO"
if [ $NO -eq 200 ];then
let success+=1 ;else
let fail+=1
fi
sleep 0.1
done
clear;echo "拨测完成,拨测结果如下:"
echo 共拨测${num}次
echo 拨测成功${success}次
echo 拨测失败${fail}次
rm -rf /etc/resolv.conf
mv /etc/resolv.conf.back /etc/resolv.conf
Version:20180421 增加回显拨测起止时间;增加自定义拨测DNSIP,拨测域名,拨测次数;增加回显拨测信息确认
#!/bin/bash
###############DNS拨测脚本 V2 20180421
###############By PlatoWG
##备份原resolv.conf文件
/bin/cp /etc/resolv.conf /etc/resolv.conf.back
##脚本主体
success=0
fail=0
read -p "请输入DNSIP:" dns
read -p "请输入拨测次数:" num
read -p "请输入拨测域名:" domain
echo "nameserver $dns" > /etc/resolv.conf
echo -e "请确认拨测信息:DNSIP:$dns \n拨测次数:$num \n拨测域名:$domain"
read -p "请输入y/n确认信息" confirm
if [ $confirm != "y" ];then
exit 0
fi
begin_time=`date "+%F %T"`
for i in `seq 1 $num`
do
NO=`curl -I $domain|grep -w HTTP|grep -w HTTP|awk '{print $2}'` &> /dev/null
clear;echo "第${i}次拨测,HTTP返回状态$NO"
if [ $NO -eq 200 ];then
let success+=1 ;else
let fail+=1
fi
sleep 0.1
done
end_time=`date "+%F %T"`
clear;echo "拨测完成,拨测结果如下:"
echo "拨测时间:$begin_time--$end_time"
echo 共拨测${num}次
echo 拨测成功${success}次
echo 拨测失败${fail}次
rm -rf /etc/resolv.conf
mv /etc/resolv.conf.back /etc/resolv.conf
Version:20180425 增加并发拨测功能,且支持自定义并发次数;增加日志记录,位置./log/(拨测时间).log
#!/bin/bash
clear
###############DNS拨测脚本 V3 20180425
###############By PlatoWG
##备份原resolv.conf文件
/bin/cp /etc/resolv.conf /etc/resolv.conf.back
##脚本主体
if [ ! -e ./log ];then
mkdir log
fi
touch ./log/`date +%F-%T`.log
logdir=./log/`date +%F-%T`.log
success=0
fail=0
read -p "请输入DNSIP:" dns
read -p "请输入拨测次数:" num
read -p "请输入拨测域名:" domain
read -p "请输入并发量:" concurrent
echo "nameserver $dns" > /etc/resolv.conf
echo -e "请确认拨测信息:DNSIP:$dns \n拨测次数:$num \n拨测域名:$domain"
read -p "请输入y/n确认信息" confirm
if [ $confirm != "y" ];then
exit 0
fi
####
trap "exec 1000>&-;exec 1000<&-;exit 0" 2
mkfifo tempfifo
exec 1000<>tempfifo
rm -rf tempfifo
for i in `seq 1 $concurrent`
do
echo >&1000
done
####
begin_time=`date "+%F %T"`
for i in `seq 1 $num`
do
read -u1000
{
curl -si $domain >> $logdir
echo -n "#"
echo >&1000
} &
done
wait
exec 1000>&-;exec 1000<&-
end_time=`date "+%F %T"`
####
success=`sed -n '/HTTP\/1\.1 200 OK/p' $logdir |cut -d" " -f 2|wc -l`
fail=`expr $[num-success]`
####
clear;echo "拨测完成,拨测结果如下:"
echo "拨测时间:$begin_time--$end_time"
sed -i -e "1i拨测时间:$begin_time--$end_time\n" $logdir
echo 共拨测成功${num}次
echo 拨测成功${success}次
echo 拨测失败${fail}次
rm -rf /etc/resolv.conf
mv /etc/resolv.conf.back /etc/resolv.conf