LINUX.ORG.RU

Сообщения Sp1DeR

 

Вывод двух значений из разных строк с помощью awk

Всем привет. Для системы мониторинга сети в офисе нужно сделать скрипт который каждый 5 минут будет кидать по 4 пинга на разные хосты и писать лог. Далее уже эти данные будут выводиться на внутреннем вебсайте. В общем скрипт выглядит вот так :

#!/bin/bash
HOSTS="**.**.**.**"

COUNT=4

for myHost in $HOSTS
do
  count=$(ping -c $COUNT $myHost | awk -F "/" '$2 ~ /avg/ {print $6}' | awk '/received/ {print $6}' >> ./result)

Проблема в том он не записывает данные в таком виде и я не могу понять почему.

Если я отдельно выполню

ping -c $COUNT $myHost | awk -F "/" '$2 ~ /avg/ {print $6}'>> ./result
или
ping -c $COUNT $myHost | awk '/received/ {print $6}' >> ./result
То данные записываются. В первом случаи это среднее значение времени ответа из строки :
rtt min/avg/max/mdev = 1.996/2.614/2.972/0.370 ms

Во тором это количество потерь из строки :

4 packets transmitted, 4 received, 0% packet loss, time 3003ms

В логе мне нужны всего два эти значения :

0%
(или более, тогда на php будет обработка что есть потери и нужно алармить) и
2.614
(как и в первом случаи)

Почему по отдельности записывает данные, а если пишу оба условия, то вообще ничего не пишет.

 ,

Sp1DeR
()

RSS подписка на новые темы