Help - Comando / Script para calcular a velocidade WiFi e salvar

1

Olá a todos da comunidade

Há alguns dias, pedi à comunidade que me ajudasse a criar um script .

#!/bin/bash

date=$(date --iso-8601=seconds)
printf 'TIME (s)\tSIGNAL STRENGTH (dBm)\t\tTxBITRATE (MBit/s)\t\tRxBITRATE (MBit/s)\n' >"$date"
printf '\n' >>"$date"

for ((i=0; i<=120; i=i+1)); do

    iw dev wlan0 station dump | awk -vt=$i '$1=="signal:"{s=$2} $1=="tx"{txb=$3} $1=="tx"{texttx=$5 $6 $7}  $1=="rx"{rxb=$3} $1=="rx"{textrx=$5 $6 $7}  END {printf "%d\t\t\t%d\t\t\t%.1f\t%s\t\t\t%.1f\t%s\n", t, s, txb, texttx, rxb, textrx}' >>"$date"
    sleep 1

done

O script gera um arquivo de saída cujo nome é o horário de início, da seguinte maneira:

TIME (s) FORÇA DE SINAL (dBm) TxBITRATE (MBit / s) RxBITRATE (MBit / s)

0 -64 135,0 MCS640MHz 108,0 MCS540MHz

1 -64 135,0 MCS640MHz 108,0 MCS540MHz

2 -66 90,0 MCS440MHz 108,0 MCS540MHz

3 -66 120,0 MCS540MHz 108,0 MCS540MHz

...

Esse script cria uma série de colunas de dados, mas eu adicionaria outras mais.

Eu quero adicionar a taxa de transmissão, pois o script anterior recebe modulação e, portanto, a taxa máxima, mas não a velocidade em um instante. Eu gostaria de modificar o script que eu tenho que adicionar velocidade de transmissão em outra coluna.

Eu pensei em obter o número de pacotes que foram enviados lendo o arquivo / proc / net / dev

grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print $2}'; #rx packages
grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print $10}'; #tx packages

Eu não sei se existe outra maneira de fazer melhor. (Certamente sim)

Portanto, o novo script deve ser adaptado para o acima para ler esses pacotes em dois instantes de tempo, subtraído e dividido pelo tempo decorrido entre eles e armazenado na mesma linha do loop principal em outra coluna do mesmo arquivo .

O resultado que quero obter é o seguinte (mais ou menos):

TEMPO (S) FORÇA DE SINAL (dBm) TxBITRATE (MBit / s) RxBITRATE (MBit / s) TxSpeed (Mbs) RxSpeed (Mbs)

0 -64 135,0 MCS640MHz 108,0 MCS540MHz 1,2 0,3

1 -64 135,0 MCS640MHz 108,0 MCS540MHz 1,5 0,4

2 -66 90,0 MCS440MHz 108,0 MCS540MHz 1,5 0,5

3 -66 120,0 MCS540MHz 108,0 MCS540MHz 2,1 0,5

...

Como posso alterar o script que tenho para adicionar velocidade WiFi?

Muito obrigado antecipadamente.

Uma saudação.

AntonioG

    
por AntonioG 09.04.2016 / 14:36

1 resposta

0

Olá a toda a comunidade,

No final, criei um script que faz o que eu quero.

Certamente há uma solução mais simples, mas isso funciona para mim.

Se alguém estiver interessado, aqui vou embora.

#!/bin/bash

date=$(date --iso-8601=seconds)
printf 'TIME (s)\tSIGNAL STRENGTH (dBm)\t\tTxBITRATE (MBit/s)\t\tRxBITRATE (MBit/s)\t\tRxRATE (KB/s)\t\tTxRATE (KB/s)\n' >"$date"
printf '\n' >>"$date"

for ((i=0; i<=120; i=i+1)); do

iw dev wlan0 station dump | awk -vt=$i '$1=="signal:"{s=$2} $1=="tx"{txb=$3} $1=="tx"{texttx=$5 $6 $7}  $1=="rx"{rxb=$3} $1=="rx"{textrx=$5 $6 $7}  END {printf "%d\t\t\t%d\t\t\t%.1f\t%s\t\t\t%.1f\t%s", t, s, txb, texttx, rxb, textrx}' >>"$date"

rx1= grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print "1: -" $2}' > "salida1"
tx1= grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print "1: -" $10}' > "salida2"
    sleep 1

rx2= grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print "2: "$2}' >> "salida1"
tx2= grep "wlan0" /proc/net/dev | awk '$1=="wlan0:"{print "2: "$10}' >> "salida2"

awk '{ sum += $2/1000 } END { printf "\t\t\t"sum}' salida1 >> "$date"
sum=0; 
awk '{ sum += $2/1000 } END { print "\t\t\t"sum}' salida2 >> "$date" 
sum=0;

done

Saudações

AntonioG.

    
por AntonioG 12.04.2016 / 23:13