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