Como posso obter uma saída inteira no ping BSD?

2

Eu estou tentando executar uma verificação simples em uma saída de valor inteiro do ping. No Linux, isso funcionava muito bem, mas o ping do FreeBSD produz um valor flutuante com sinal de porcentagem com sufixo.

LOSS='/sbin/ping -c 10 -W 1000 -n $IP | grep loss | awk '{print $7}''

if [ ${LOSS} > ${LIMIT} ]; then
    # Do something here
fi

Mas como o valor de $ {LOSS} é uma string, a comparação está falhando no BSD.

Ajuda, por favor?

    
por Grabby 24.07.2013 / 11:09

2 respostas

0

Você pode alterar o awk para dividir em espaços e pontos para extrair a parte inteira do valor de perda.

ping -c 10 1.2.3.4 | grep loss | awk '{FS = " |[\.]"} {print $7}'
    
por 24.07.2013 / 12:16
0

Você precisa procurar no comando ping do BSDs. man ping suponho que você quer seguir:

#!/bin/sh

count1=0
count2=0

Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-2)}') # BSD
#Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-4)}')  # Linux

if [ "$Ping" == "0%" ]; then
count1=$((count1 + 1))
echo IP_addr" "UP" "
else
count2=$((count2 + 1))
echo IP_addr" "DOWN" "
fi

echo $count1 IP addresses UP and $count2 IP addresses DOW

Caso você não obtenha o resultado desejado, descubra quais parâmetros você precisa modificar no comando ping.

Espero que ajude!

    
por 24.07.2013 / 12:15

Tags