确定连接是有线还是无线?

determine if connection is wired or wireless?

我有一个我制作的 bash 脚本,当我的每台计算机上 运行 时,它会检测 CPU 个核心的数量,HDDs/partitions,是否存在电池等,并生成一个 conkyrc 文件以使用我喜欢的样式在我的 conky 中显示该 PC 的相关信息。但是,我很难确定 PC 是在有线还是无线互联网连接上。

有人知道用 bash 脚本确定连接类型的方法吗?

试试这个:

tail -n+3 /proc/net/wireless | grep -q . && echo "We are wireless"

详情

在硬连线系统上,/proc/net/wireless 的内容由两行 header 组成:

# cat /proc/net/wireless 
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22

在具有活动无线接口的系统上,将有第三行显示有关该接口的数据。

上述命令的工作原理如下

  • tail -n+3命令用于删除header。

  • 如果无线接口处于活动状态,grep -q . 命令会测试是否存在后续线路。

备选

iwconfig 是一个从 /proc/net/wireless:

读取信息的实用程序
iwconfig 2>&1 | grep -q ESSID && echo "We are wireless"