Comment trouver la vitesse de l'interface WLAN?

13

J'essaie de trouver la vitesse de l'interface réseau en utilisant un descripteur de fichier. Il est facile de le faire ethXsimplement en appelant cat /sys/class/net/eth0/speed. Malheureusement, cette méthode ne fonctionne pas avec l'interface sans fil. Lorsque j'appelle, /sys/class/net/wlan0/speedj'obtiens une erreur: argument non valide.

Alors, connaissez-vous un /sys/class/net/eth0/speedanalogue pour l'interface wlan?

Tural Gurbanov
la source

Réponses:

14

Vous pouvez utiliser l' iwconfigoutil pour trouver ces informations:

$ 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

Si vous souhaitez que le débit binaire de /sysdirectement essayer ceci:

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

Ou de /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

REMARQUE: La valeur du lien dans le 2ème exemple est 56, par exemple

Je crois que le Mo / s est une valeur calculée, donc il ne sera stocké nulle part spécifiquement pour le périphérique wlan0. Je pense que cela prend les bits agrégés transférés sur l'interface et les divise par le temps nécessaire au transfert desdites données.

Un autre moyen d'obtenir ces informations est d'utiliser l'outil iw. Cet outil est un utilitaire de configuration CLI basé sur nl80211 pour les périphériques sans fil. Cela devrait être sur n'importe quelle distribution Linux récente.

$ 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

Cela montre également la quantité de paquets envoyés et reçus (RX / TX).

slm
la source
L'application, pour laquelle je recherche une solution, utilise un objet de type fichier pour en lire la vitesse réseau. Et je ne peux pas ajouter de nouvelle partie de code qui pourrait m'aider à extraire des informations d'iwconfig. La configuration de l'application utilise uniquement le chemin d'accès au fichier avec vitesse.
Tural Gurbanov
N'avez-vous pas déjà installé iwconfig? Il est généralement installé si vous disposez d'un réseau sans fil. Je n'ai pas encore à l'installer explicitement sur tous les systèmes que j'ai rencontrés qui ont une connexion sans fil.
slm
1
Notez que vous pourriez obtenir plus d'informations iwconfiglors de son exécution en tant que root. La vitesse, dBm, etc. me manque sans root
phiresky
2

L'approche par slm est erronée, le débit de données indiqué par iwconfigest la vitesse maximale prise en charge par l'interface pour la liaison. Ce n'est pas le courant auquel les données sont transférées. Utilisez le /sys/class/net/<interfacename>/statistics/<tx/rx>_bytesfichier pour obtenir par interface les octets transférés en direct.

Pradheesh Shanmugam
la source