Привет всем сообществу
Несколько дней назад я попросил сообщество помочь мне создать скрипт .
#!/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
Привет всему сообществу,
В конце, я создал сценарий, который делает то, что я хочу.
, Конечно, существует простое решение, но это работает на меня.
, Если кому-либо интересно, здесь я уезжаю.
#!/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.