Извлечение записи и времени запроса из вывода dig

Простым решением было бы указать каждому экземпляру strongswan использовать разные каталоги для хранения файла PID, установив правильное значение переменной средыIPSEC_PIDDIRв сценарии запуска и остановки.

1
11.09.2019, 16:50
3 ответа

С awk довольно просто: условия точного соответствия могут быть изменены в зависимости от возможных шаблонов, которые могут появиться:

dig @1.1.1.1 google.com  +noall +answer +stats | \
  awk '$3 == "IN" && $4 == "A"{ip=$5}/Query time:/{t=$4 " " $5}END{print ip, t}'
3
27.01.2020, 23:22

Использование grep,

dig @1.1.1.1 google.com  +noall +answer +stats | grep -oEe "\b([0-9]{1,3}\.){3}[0-9]{1,3}$" -oEe 'Query time: [0-9]+ msec'
  • -oEe "\b([0-9]{1,3}\.){3}[0-9]{1,3}$"будет искать IP-адрес в конце любой строки

  • -oEe 'Query time: [0-9]+ msec'для поиска времени запроса.

1
27.01.2020, 23:22

С GNUsed:

dig @1.1.1.1 google.com  +noall +answer +stats | \
  sed -nEz 's/.*[[:space:]]([0-9.]+)\n;; (Query time[^\n]*\n).*/\1 \2/p'

С опцией sedи -zввод обрабатывается как одна большая строка, а опция -nпечатает только совпадающие части(/p). Поскольку за IP-адресом сразу же следует новая строка и ;; Query time, мы можем использовать более простое регулярное выражение для сопоставления с IP-адресом. Обе строки захватываются в группу (…), а ввод заменяется на \1 \2, относящимся к этим группам.

1
27.01.2020, 23:22

Теги

Похожие вопросы