linux – 如何动态查找连接到系统的接口的名称和类型
我有一个用例,我需要动态配置一些文件,其中包括系统中存在的接口名称,例如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. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |