有没有办法从 fs 中的文件获取当前活动的 wifi 网卡接口 - 而不是通过运行 iwconfig 等命令?

有没有办法从 fs 中的文件获取当前活动的 wifi 网卡接口 - 而不是通过运行 iwconfig 等命令?

我知道有几种方法可以通过运行不同的工具来获取当前活动的网卡接口,其中之一是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 

结果是updown

列出所有接口名称:

ls /sys/class/net

检查是否是无线网卡:

[[ -d "/sys/class/net/$IFACE/wireless" ]] && echo "WiFi card"

/proc/sys/net/ 的文档

内核档案

相关内容