在 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'