Как найти скорость интерфейса WLAN?

13

Я пытаюсь найти скорость сетевого интерфейса, используя файл-дескриптор. Это легко сделать ethX, просто позвонив cat /sys/class/net/eth0/speed. К сожалению, этот метод не работает с беспроводным интерфейсом. Когда я звоню, /sys/class/net/wlan0/speedя получаю сообщение об ошибке: неверный аргумент.

Итак, вы знаете какой-нибудь /sys/class/net/eth0/speedаналог для интерфейса WLAN?

Турал Гурбанов
источник

Ответы:

14

Вы можете использовать iwconfigинструмент, чтобы узнать эту информацию:

$ iwconfig wlan0
wlan0     IEEE 802.11bg  ESSID:"SECRETSSID"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:10:7A:93:AE:BF   
          Bit Rate=48 Mb/s   Tx-Power=14 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=55/70  Signal level=-55 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Если вы хотите, чтобы скорость передачи была /sysнапрямую, попробуйте это:

$ cat /sys/class/net/wlan0/wireless/link
51

Или из /proc:

$ cat /proc/net/wireless 
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000   56.  -54.  -256        0      0      0      0      0        0

ПРИМЕЧАНИЕ . Значение ссылки во втором примере - 56, например,

Я считаю, что МБ / с - это расчетное значение, поэтому оно не будет храниться где-то специально для устройства wlan0. Я думаю, что он берет совокупные биты, передаваемые по интерфейсу, и делит их на время, необходимое для передачи указанных данных.

Еще один способ получить эту информацию - использование инструмента iw. Этот инструмент основан на утилите конфигурирования CLI для беспроводных устройств. Это должно быть в любом новом дистрибутиве Linux.

$ iw dev wlan0 link
Connected to 00:10:7A:93:AE:BF (on wlan0)
    SSID: SECRETSSID
    freq: 2462
    RX: 89045514 bytes (194863 packets)
    TX: 34783321 bytes (164504 packets)
    signal: -54 dBm
    tx bitrate: 48.0 MBit/s

Это также показывает количество отправленных и полученных пакетов (RX / TX).

SLM
источник
Приложение, для которого я ищу решение, использует файловый объект для чтения скорости сети из него. И я не могу добавить новую часть кода, которая может помочь мне извлечь информацию из iwconfig. Конфигурация для приложения использует только путь к файлу со скоростью.
Турал Гурбанов
У вас не установлен iwconfig? Обычно он устанавливается, если у вас есть беспроводная сеть. Мне еще не пришлось явно устанавливать его на любых системах, с которыми я столкнулся, имеющих беспроводную связь.
SLM
1
Обратите внимание, что вы можете получить больше информации iwconfigпри запуске от имени пользователя root. Мне не хватает скорости, дБм и т. Д. Без рута
phiresky
2

Подход с помощью slm неверен, скорость передачи данных, указанная в iwconfigкачестве максимальной скорости, поддерживаемой интерфейсом для канала. Это не ток, при котором данные передаются. Используйте /sys/class/net/<interfacename>/statistics/<tx/rx>_bytesфайл для получения байтов интерфейса, передаваемых в реальном времени.

Прадиш Шанмугам
источник