Como encontrar a velocidade da interface wlan?

13

Estou tentando encontrar a velocidade da interface de rede usando o descritor de arquivo. É fácil fazer isso ethXapenas ligando cat /sys/class/net/eth0/speed. Infelizmente, esse método não funciona com interface sem fio. Quando ligo /sys/class/net/wlan0/speedrecebo erro: argumento inválido.

Então, você conhece algum /sys/class/net/eth0/speedtipo de interface analógica para wlan?

Tural Gurbanov
fonte

Respostas:

14

Você pode usar a iwconfigferramenta para encontrar essas informações:

$ 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

Se você deseja que a taxa de bits /systente diretamente, faça o seguinte:

$ 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

NOTA: O valor para o link no segundo exemplo é 56, por exemplo

Eu acredito que o MB / s é um valor calculado, portanto não será armazenado em nenhum lugar especificamente para o dispositivo wlan0. Acho que está pegando os bits agregados transferidos pela interface e dividindo-os pelo tempo que os dados foram transferidos.

Uma maneira adicional de obter essas informações é usar a ferramenta iw. Esta ferramenta ew nl80211, utilitário de configuração da CLI para dispositivos sem fio. Deve estar em qualquer distribuição Linux recente.

$ 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

Isso também mostra a quantidade de pacotes enviados e recebidos (RX / TX).

slm
fonte
O aplicativo, para o qual procuro uma solução, usa um objeto parecido com um arquivo para ler a velocidade da rede. E não consigo adicionar nenhuma nova parte do código que possa me ajudar a extrair informações do iwconfig. A configuração do aplicativo usa apenas o caminho para arquivar com velocidade.
Tural Gurbanov
Você não possui o iwconfig já instalado? É normalmente instalado se você tiver uma rede sem fio. Ainda tenho que instalá-lo explicitamente em qualquer sistema que encontrei que possua conexão sem fio.
Slm
1
Observe que você pode obter mais informações iwconfigao executá-lo como root. Velocidade, dBm etc está faltando para mim sem raiz
phiresky
2

A abordagem por slm está errada, a taxa de dados mostrada iwconfigé a velocidade máxima suportada pela interface para o link. Não é a corrente na qual os dados são transferidos. Use o /sys/class/net/<interfacename>/statistics/<tx/rx>_bytesarquivo para obter por bytes de interface transferidos ao vivo.

Pradheesh Shanmugam
fonte