Mostra a diferença entre os dados no script

0

Eu tentei criar um script que pode me ajudar a gerar informações sobre dados recebidos e transmitidos em uma interface específica. Aqui está o material inicial:

#!/bin/bash

interface=$1

while true; do
ip -s link ls $interface | awk '{ print $1 "\t" $2}'

sleep 10
done

Mas também quero obter a diferença de alterações nos dados. Eu não tenho a menor idéia de como produzi-lo. Então, por exemplo, eu recebo isso da minha linha de script ip -s link ls $interface | awk '{ print $1 "\t" $2}' :

2:      enp0s3:
link/ether      08:00:27:ad:a6:53
RX:     bytes
38134   399
TX:     bytes
34722   247

Desejo obter a diferença entre 38134 e 34722 e, em seguida, a diferença entre 399 e 247 e adicionar a algum arquivo, por exemplo.

    
por fuser 10.12.2015 / 11:52

1 resposta

1

Eu tenho um script feio que pode responder às suas necessidades. A ideia é:

  • armazene as estatísticas da interface em um arquivo
  • leia o arquivo linha por linha
  • se a linha contiver RX (resp TX), isso significa que a linha a seguir contém informações que você deseja analisar.

O script:

#!/bin/bash

ip -s link ls $interface > ip_stats

RX=0
TX=0
# read file
while read LINE
do 
    # read RX info form line
    if [ $RX -eq 1 ]
    then
        RX_packets=$(echo $LINE | awk '{print $1}')
        RX_bytes=$(echo $LINE | awk '{print $2}')        
    fi
    # see if next line will contain RX stats
    if echo $LINE | grep RX 
    then
        RX=1
    else
        RX=0
    fi

    # read TX info form line
    if [ $TX -eq 1 ]
    then
        TX_packets=$(echo $LINE | awk '{print $1}')
        TX_bytes=$(echo $LINE | awk '{print $2}')        
    fi
    # see if next line will contain TX stats
    if echo $LINE | grep TX 
    then
        TX=1
    else
        TX=0
    fi

done < ip_stats

echo RX_packets is $RX_packets
echo TX_packets is $TX_packets

echo RX_bytes is $RX_bytes
echo TX_bytes is $TX_bytes

# make diff
echo packets diff: $(expr $RX_packets - $TX_packets )
echo bytes diff: $(expr $RX_bytes - $TX_bytes )
    
por 10.12.2015 / 12:53