Средняя скорость времени запроса DIG для нескольких сайтов - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над своим первым сценарием.Я хочу использовать dig, чтобы получить время запроса для нескольких сайтов из файла .txt и вывести среднее значение. Вот источник , я не знаю, как напечатать только время запроса без текста.Спасибо!

#!/bin/bash

# Colors
default='\033[0m'    # Default
red='\033[0;31m'     # Red
green='\033[0;32m'   # Green
blue='\033[0;34m'    # Blue
cyan='\033[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

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете передать 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 и увеличивает счетчик.В конце она делит сумму на счетчик, чтобы вычислить среднее значение.

...