¿Cómo encontrar la velocidad de la interfaz wlan?

13

Estoy tratando de encontrar la velocidad de la interfaz de red usando el descriptor de archivo. Es fácil hacerlo ethX, solo llamando cat /sys/class/net/eth0/speed. Lamentablemente, este método no funciona con la interfaz inalámbrica. Cuando llamo /sys/class/net/wlan0/speedme sale error: argumento no válido.

Entonces, ¿conoces algún /sys/class/net/eth0/speedanálogo para la interfaz wlan?

Tural Gurbanov
fuente

Respuestas:

14

Puede usar la iwconfigherramienta para encontrar esta información:

$ 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 desea la tasa de bits /sysdirectamente intente esto:

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

O 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

NOTA: El valor para el enlace en el segundo ejemplo es 56, por ejemplo

Creo que el MB / s es un valor calculado, por lo que no se almacenará en ningún lugar específico para el dispositivo wlan0. Creo que está tomando los bits agregados transferidos a través de la interfaz y dividiéndolos por el tiempo que tardó en transferirse dichos datos.

Una forma adicional de obtener esta información es usar la herramienta iw. Esta herramienta utiliza la utilidad de configuración CLI basada en nl80211 para dispositivos inalámbricos. Debería estar en cualquier distribución reciente de 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

Esto también muestra la cantidad de paquetes enviados y recibidos (RX / TX).

slm
fuente
La aplicación, para la que busco una solución, utiliza un objeto similar a un archivo para leer la velocidad de la red. Y no puedo agregar ninguna parte nueva de código que pueda ayudarme a extraer información de iwconfig. La configuración para la aplicación usa solo la ruta al archivo con velocidad.
Tural Gurbanov
¿No tienes iwconfig ya instalado? Normalmente se instala si tiene una red inalámbrica. Todavía tengo que instalarlo explícitamente en cualquier sistema que haya encontrado que tenga conexión inalámbrica.
slm
1
Tenga en cuenta que puede obtener más información iwconfigal ejecutarlo como root. Velocidad, dBm, etc., me falta sin root
phiresky
2

El enfoque de slm es incorrecto, la velocidad de datos que se muestra iwconfiges la velocidad máxima admitida por la interfaz para el enlace. No es la corriente a la que se transfieren los datos. Use el /sys/class/net/<interfacename>/statistics/<tx/rx>_bytesarchivo para obtener los bytes por interfaz transferidos en vivo.

Pradheesh Shanmugam
fuente