さまざまなツールを実行して現在アクティブなネットワークカードインターフェイスを取得する方法はいくつかあります。そのうちの1つは次のとおりです。iwconfig
私は同じ結果を得る方法を探しています。ただし、可能であればLinuxのファイルシステムにアクセスする必要があります。他のデータを取得するために、すでに別のプロセスが実行されている.NETアプリケーションがあります。これらの外部プロセスをできるだけ減らす必要があります。
答え1
回答で提案されている内容を自動化するスクリプトが必要な場合に備えて、GAD3Rの回答に追加します(この目的のために作成したスニペット)。
#!/bin/bash
function getFirstActiveNIC()
{
interfaces="/sys/class/net/*"
for interface in ${interfaces};
do
if [ $(cat "${interface}/operstate") = "up" ];
then
echo "$(basename ${interface})"
fi
done
}
答え2
この情報は以下から入手できます。
cat /sys/class/net/$IFACE/operstate
結果up
はdown
すべてのインターフェイス名を一覧表示します。
ls /sys/class/net
ワイヤレスネットワークカードであることを確認してください。
[[ -d "/sys/class/net/$IFACE/wireless" ]] && echo "WiFi card"