多个站点的 DIG 查询时间平均速度



我正在处理我的第一个脚本。我想使用 dig 从.txt文件中获取多个站点的查询时间并打印平均值。 这是来源,我不知道如何只打印查询时间而没有文本。 谢谢!

#!/bin/bash
# Colors
default='33[0m'    # Default
red='33[0;31m'     # Red
green='33[0;32m'   # Green
blue='33[0;34m'    # Blue
cyan='33[0;36m'    # Cyan
# Vars / const
options='+nocomments +stats'
sites="$(cat sites.txt)"
# User input
echo -ne "${blue}Please enter DNS server: $default"
read dns
echo -e "${green}Welcome to main menu!"
echo -ne "${green}(0) ${default}- Default list / ${green}(1)${default} Custom / ${green}(3)${default} - Install dependencies ${default}: "
read choose

# Conditions for $choose
if [ "$choose" == "0" ]; then
echo -e "${cyan}"
/usr/bin/dig @$dns ${options} ${sites}
echo -e "${default}"
elif [ "$choose" == "1" ]; then
echo -ne "${blue}Please write the sites here. ${default}Example: ${blue}( google.com instagram.com ) : ${default}"
read custom_list
echo -e "${cyan}"
/usr/bin/dig @$dns ${options} $custom_list
echo -e "${default}"
elif [ "$choose" == "3" ]; then
apt-get install -y dnsutils

else
echo -e "${blue}Please choose ${default}(0) ${blue}or ${default}(1)"
fi

您可以将dig管道传输到awk以计算平均值:

/usr/bin/dig @$dns ${options} $custom_list | 
awk '/Query time/ { total += $4; count++ } 
END {print "Average:", total/count, "ms" }'

包含查询时间的行如下所示:

;; Query time: 61 msec

因此,这匹配字符串Query time,将第 4 个字段添加到total变量并递增计数器。最后,它将总数除以计数以计算平均值。

最新更新