存在するこのツール、ワイヤレスインターフェースの名前はハードコードされていますwlan0
。 Ubuntu 14.04ではこれは合理的な仮定ですが、Ubuntu 15.10ではワイヤレスインターフェイス名が変更されているようです。
実行時に最初のワイヤレスインターフェイスの名前を検出するようにツールを変更したいと思います。
1つの方法はの出力から名前を解析することですiwconfig
。
iwconfig 2>&1 | grep ESSID | awk '{print $1}' | head -n 1
残念ながら、このアプローチはiwconfig
。
コマンドラインからワイヤレスインターフェイス名を取得する移植可能でより直接的なコマンドはありますか?
ベストアンサー1
Linuxでは、ネットワークデバイスがにリストされています/sys/class/net/
。タイプで指定された各デバイスのエントリがあります/sys/class/net/$finame/type
。タイプは次に定義されていますif_arp.h
。
#define ARPHRD_IEEE80211 801 /* IEEE 802.11
以下では、特定の種類のすべてのデバイスを見つけることができます。
find_by_type() {
(
cd /sys/class/net/ || return 1
for dev in * ; do
if test "$(cat "$dev/type")" = "$1" ; then
echo $dev
fi
done
)
}
その後、次のことができます。
wlan="$(find_by_type 801 | head -n1)"
しかし、これはLinuxでのみ動作します。