Jak znaleźć prędkość interfejsu WLAN?

13

Próbuję znaleźć szybkość interfejsu sieciowego za pomocą deskryptora pliku. Łatwo to zrobić ethX, po prostu dzwoniąc cat /sys/class/net/eth0/speed. Niestety ta metoda nie działa z interfejsem bezprzewodowym. Kiedy dzwonię, /sys/class/net/wlan0/speedpojawia się błąd: nieprawidłowy argument.

Czy znasz jakiś /sys/class/net/eth0/speedanalog dla interfejsu WLAN?

Tural Gurbanov
źródło

Odpowiedzi:

14

Możesz użyć tego iwconfignarzędzia, aby znaleźć te informacje:

$ 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

Jeśli chcesz /sysbezpośrednio od bitów, spróbuj tego:

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

Lub z /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

UWAGA: Wartość łącza w drugim przykładzie wynosi 56, np

Wierzę, że MB / s jest wartością obliczoną, więc nie będzie przechowywana nigdzie specjalnie dla urządzenia wlan0. Wydaje mi się, że pobiera zagregowane bity przesyłane przez interfejs i dzieli je przez czas, po którym dane zostały przesłane.

Dodatkowym sposobem na uzyskanie tych informacji jest użycie narzędzia iw. To narzędzie ew nl80211 narzędzie do konfiguracji interfejsu CLI dla urządzeń bezprzewodowych. Powinien być na każdej ostatniej dystrybucji Linuksa.

$ 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

Pokazuje także liczbę wysłanych i odebranych pakietów (RX / TX).

slm
źródło
Aplikacja, dla której szukam rozwiązania, używa obiektu podobnego do pliku, aby odczytać z niego prędkość sieci. Nie mogę dodać żadnej nowej części kodu, która mogłaby pomóc mi wyodrębnić informacje z iwconfig. Konfiguracja aplikacji używa tylko ścieżki do pliku z szybkością.
Tural Gurbanov
Czy nie masz już zainstalowanej iwconfig? Zwykle jest instalowany, jeśli masz sieć bezprzewodową. Muszę jeszcze jawnie zainstalować go na każdym napotkanym systemie, który ma sieć bezprzewodową.
slm
1
Pamiętaj, że możesz uzyskać więcej informacji iwconfig, uruchamiając je jako root. Brakuje mi prędkości, dBm itp. Bez
rootowania
2

Podejście slm jest błędne, szybkość przesyłania danych wskazywana przez iwconfigto maksymalna prędkość obsługiwana przez interfejs łącza. To nie jest prąd, przy którym dane są przesyłane. Użyj /sys/class/net/<interfacename>/statistics/<tx/rx>_bytespliku, aby pobrać bajty interfejsu na żywo przesłane.

Pradheesh Shanmugam
źródło