Як знайти швидкість інтерфейсу 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, наприклад, наприклад

Я вважаю, що MB / s - це розрахункове значення, тому воно не буде зберігатися ніде спеціально для пристрою wlan0. Я думаю, що він бере сукупні біти, передані через інтерфейс, і ділить їх на час, коли потрібні дані передаються.

Ще одним додатковим способом отримання цієї інформації є використання інструменту iw. Цей інструмент ew nl80211 на основі утиліти 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).


Додаток, для якого я шукаю рішення, використовує файлоподібний об'єкт для зчитування швидкості мережі з нього. І я не можу додати жодної нової частини коду, яка може допомогти мені отримати інформацію з iwconfig. Конфігурація програми використовує лише шлях до файлу зі швидкістю.
Турал Гурбанов

У вас ще не встановлено iwconfig? Зазвичай він встановлюється, якщо у вас є бездротова мережа. Мені ще доведеться явно встановлювати його на будь-яких системах, з якими я стикався, які мають бездротовий зв’язок.
slm

1
Зауважте, що ви можете отримати більше інформації, iwconfigколи запускаєте її як root. Швидкість, дБм тощо не вистачає для мене без кореня
phiresky

2

Підхід методом slm невірний, показана швидкість передачі даних iwconfig- це максимальна швидкість, що підтримується інтерфейсом для посилання. Це не той струм, при якому передаються дані. Використовуйте /sys/class/net/<interfacename>/statistics/<tx/rx>_bytesфайл для отримання байтів інтерфейсу, переданих в реальному часі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.