Помощь - Команда / Скрипт для расчета скорости WiFi и сохранения

Привет всем сообществу

Несколько дней назад я попросил сообщество помочь мне создать скрипт .

#!/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

Сценарий генерирует выходной файл, именем которого является время его запуска, следующим образом:

<час>

ВРЕМЯ (s) СИГНАЛ СИЛЬНОЙ (дБм) TxBITRATE (Мбит / с) RxBITRATE (MBit / с)

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 MCS540 МГц 108,0 MCS540 МГц

...


Этот скрипт создает серию столбцов данных, но я бы добавил еще несколько.

Я хочу добавить скорость передачи, поскольку предыдущий сценарий получает модуляцию и, следовательно, максимальную скорость, но не скорость в одно мгновение. Я хотел бы изменить сценарий, чтобы добавить скорость передачи в другой столбец.

Я думал о том, чтобы узнать количество отправленных пакетов, читая файл / 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

Я не знаю, есть ли другой способ добиться большего успеха. (Конечно, да)

Следовательно, новый скрипт должен быть адаптирован к вышеприведенному, чтобы считывать эти пакеты за два момента времени, вычитая их и деля на время, прошедшее между ними и сохраненное в той же строке основного цикла. в другом столбце того же файла.

Результат, который я хочу получить, выглядит следующим образом (более или менее):


ВРЕМЯ (s) СИГНАЛ СИЛЬНОЙ (дБм) TxBITRATE (МБит / с) RxBITRATE (МБит / с) 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 1,5S 540M 0,5

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

...


Как мне изменить скрипт, который мне нужен, чтобы добавить скорость WiFi?

Заранее большое спасибо.

Приветствие.

AntonioG

1
задан 13 April 2017 в 15:24

1 ответ

Привет всему сообществу,

В конце, я создал сценарий, который делает то, что я хочу.

, Конечно, существует простое решение, но это работает на меня.

, Если кому-либо интересно, здесь я уезжаю.

#!/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

Поздравления,

AntonioG.

0
ответ дан 14 April 2017 в 01:24
  • 1
    It' s удивительный, как разархивировали " knows" когда прекратить распаковывать. – pLumo 18 August 2017 в 21:00

Другие вопросы по тегам:

Похожие вопросы: