さまざまなWiFi情報を取得する方法を探していたところ、/sys/class/net/wlan7/speed
file.txtファイルが見つかりました。問題は、読み取り権限をすべて付与しても読み取れないことです。
$ ls -l /sys/class/net/wlan7/speed
-r--r--r-- 1 root root 4096 3月 24 15:08 /sys/class/net/wlan7/speed
$ sudo cat /sys/class/net/wlan7/speed
[sudo] password for xieerqi:
cat: /sys/class/net/wlan7/speed: Invalid argument
ファイルを記録してリストすることはできますが、ファイルをls
読み取ろうとするたびに(with hexdump
、with cat
、Pythonのバイナリ読み取りモードなど)、誤った引数エラーが発生します。
strace
この時点で明らかにエラーが発生したことを示しています。
read(3, 0x7f6ad6b44000, 131072) = -1 EINVAL (Invalid argument)
write(2, "cat: ", 5cat: ) = 5
write(2, "/sys/class/net/wlan7/speed", 26/sys/class/net/wlan7/speed) = 26
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
(完全な追跡リンクを貼り付ける:http://paste.ubuntu.com/24252504/)
これとは対照的に、イーサネットインターフェイスの対応するドキュメントは次のように機能します。
$ cat /sys/class/net/eth3/speed
10
だから基本的に私の質問は:このファイルをどのように読みますか?
オペレーティングシステム:Ubuntu 16.04 LTS、カーネル4.4.0-67-標準、AR9565 WiFiアダプタ
答え1
このファイルは、/sys/class/net/<iface>/speed
サポートされているデバイスでのみ有効です。ethtoolが設定を取得する主にイーサネットアダプタに適用される方法です。
WiFiデバイスの速度を取得するには、iwconfig
またはを使用できますiwlist
。
iwconfig wlan7
iwlist wlan7 rate
カーネル文書から:
What: /sys/class/net/<iface>/speed
...
Description:
Indicates the interface latest or current speed value. Value is
an integer representing the link speed in Mbits/sec.
Note: this attribute is only valid for interfaces that implement
the ethtool get_settings method (mostly Ethernet ).