仅检索活动网络接口的名称

仅检索活动网络接口的名称

在 Linux 中,如何从命令行(或 shell 脚本)仅检索活动网络接口的名称?如果有多个活动接口,我只想要一个(任意选择)。

答案1

现代的方法是使用命令ip。例如,在我的无线连接处于活动状态的系统上,我得到:

$ ip 地址显示
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状态 UNKNOWN 组默认值
    链接/环回 00:00:00:00:00:00布罗德00:00:00:00:00:00
    内网127.0.0.1/8 范围主机 lo
       永远有效_lft 永远首选_lft
    内网6 ::1/128 范围主机
       永远有效_lft 永远首选_lft
2:eno1:<无载波,广播,组播,向上> mtu 1500 qdisc fq_codel 状态 DOWN 组默认 qlen 1000
    链接/以太 00:26:b9:dd:2c:28布罗德ff:ff:ff:ff:ff:ff
3: wlp3s0b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 状态 UP 组默认 qlen 1000
    链接/以太 c4:46:19:5f:dc:f5布罗德ff:ff:ff:ff:ff:ff
    内网192.168.1.4/24布罗德192.168.1.255 范围全局 wlp3s0b1                            
       永远有效_lft 永远首选_lft
    内网6 fe80::c646:19ff:fe5f:dcf5/64 范围链接
       永远有效_lft 永远首选_lft
16: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue 状态未知组默认 qlen 100
    链接/无
    内网123.167.217.2/24布罗德123.167.217.255 范围全局 tun0                            
       永远有效_lft 永远首选_lft

活动接口具有inet条目和广播 ( brd) 地址。您可以使用以下命令显示所有此类接口:

$ ip addr show | awk '/inet.*brd/{print $NF}'
wlp3s0b1
tun0

如果您只想要一个,您可以通过以下方式获得(仅)第一个:

$ ip addr show | awk '/inet.*brd/{print $NF; exit}'
wlp3s0b1

exit语句指示awk在找到第一个匹配项后停止搜索。

答案2

ifconfig | sed 's/[ \t].*//;/^\(lo\|\)$/d'

相关内容