Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何动态查找连接到系统的接口的名称和类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个用例,我需要动态配置一些文件,其中包括系统中存在的接口名称,例如eth0,wlan0.但是,当我更改系统时,它有时会更改为eth1或wlan1.从Ubuntu 14.04开始,以太网接口被命名为p2p1,p1p1就像这样,无线接口被命名为wlan0或wlan1. 所以我们可以说接口名称可以是任何东西,只要我们能找到什么样的接口给出什么名称就无所谓了. 我为此编写了一个小脚本,但我不知道是否
我有一个用例,我需要动态配置一些文件,其中包括系统中存在的接口名称,例如eth0,wlan0.但是,当我更改系统时,它有时会更改为eth1或wlan1.从Ubuntu 14.04开始,以太网接口被命名为p2p1,p1p1就像这样,无线接口被命名为wlan0或wlan1.

所以我们可以说接口名称可以是任何东西,只要我们能找到什么样的接口给出什么名称就无所谓了.

我为此编写了一个小脚本,但我不知道是否有更好的方法可以找到适用于所有基于Linux的系统的脚本.

#!/bin/bash

# check if Directory exist 
DIRECTORY=/sys/class/net
wifi_interface=""
lan_interface=""
if [ -d "$DIRECTORY" ]; then
    cd $DIRECTORY

    ilist=`ifconfig -s  | awk '{print $1}' | tail -n +2`

    # array length
    ilist_len=`echo "${ilist[@]}" | wc -l`

    # empty array 
    il=

    # Iterating over interfaces 
    for i in $(seq 1 $ilist_len)
    do 
        iname=`echo $ilist | sed -n "$i"p`
        echo $iname
        if [ "$iname" != "lo" ]; then
            cur_dir=$DIRECTORY/$iname
            cd $cur_dir
            if [ -d "$cur_dir/wireless" ]; then
                wifi_interface=$iname
            else 
                lan_interface=$iname
            fi
        fi
        pwd
        cd ~
    done
    exit 0
else
    echo "Can't find the directories ! Something went wrong "
    exit 0
fi

在上面的脚本中,我根据目录/ sys / class / net /< INTERFACE> / wireless的存在与否决定了接口类型.该脚本假定以太网和无线只有1-1接口.

我怀疑无线目录始终存在于所有无线接口中.例如,在虚拟无线接口的情况下.

解决方法

今天,对于一个相对现代的Linux发行版,我最初会尝试使用ip命令
ip link show

然后过滤它的输出以获得接口列表.

您也可以使用ifconfig -a,但认情况下,某些发行版的较新版本不再安装.

类似地,netstat -i可能是有用的.

您可以使用iwconfig命令确定接口是否为无线接口

iwconfig ens160
ens160    no wireless extensions.

大佬总结

以上是大佬教程为你收集整理的linux – 如何动态查找连接到系统的接口的名称和类型全部内容,希望文章能够帮你解决linux – 如何动态查找连接到系统的接口的名称和类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。