Простым решением было бы указать каждому экземпляру strongswan использовать разные каталоги для хранения файла PID, установив правильное значение переменной средыIPSEC_PIDDIR
в сценарии запуска и остановки.
С 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}'
Использование 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'
для поиска времени запроса.
С 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
, относящимся к этим группам.