打印 IP 地址和接口名称

打印 IP 地址和接口名称

我想显示 IP 地址,如下所示

lo : 127.0.0.1 
eth0 : 192.168.5.123
eth1 : 192.172.0.212
wlan0 : 10.1.0.124

我可以通过 打印所有 IP 地址ifconfig | awk '/inet addr/{print substr($2,6)}'。但它只是打印 IP。每个系统都有自己的接口名称和地址。所以我的脚本必须显示它们与 IP 地址相关的接口。

答案1

以下将做你想做的事:

$ ip addr | awk '
/^[0-9]+:/ { 
  sub(/:/,"",$2); iface=$2 } 
/^[[:space:]]*inet / { 
  split($2, a, "/")
  print iface" : "a[1] 
}'
lo : 127.0.0.1
br0 : 10.1.10.12

答案2

ip -o addr | awk '{split($4, a, "/"); print $2" : "a[1]}'

或者,如果您对本地地址不感兴趣:

ip -o addr show scope global | awk '{split($4, a, "/"); print $2" : "a[1]}'

答案3

尝试这个:

ip -o a show | cut -d ' ' -f 2,7

127.0.0.1/8

瞧::1/128

enp0s31f6 10.35.4.166/23

enp0s31f6 2620:52:0:2304:367:c01c:fe74:22ed/64

enp0s31f6 fe80::9a54:7adb:839e:fdb6/64

wlp58s0 10.201.132.132/22

wlp58s0 fe80::fa34:41ff:feb3:a06/64

virbr0 192.168.122.1/24

docker0 172.17.0.1/16

答案4

仅对于 IPv4 地址,使用

ip -o addr | awk '{split($4, a, "/"); print $2" : "a[1]}' | grep -v '::'

我想出这个是因为接受的答案不方便作为别名粘贴到 .bashrc 文件中。

每次输入这么长的命令是很费力的。

所以我在 bashrc 文件中创建了一个别名

sudo nano ~/.bashrc

将此行添加到文件末尾

alias myip="ip -o addr | awk '{split(\$4, a, \"/\"); print \$2\" : \"a[1]}' | grep -v '::'"

使用 Ctrl+O 保存,然后使用 Ctrl+X 退出

source ~/.bashrc

您可能必须为上述命令添加前缀 sudo

现在你可以在终端中输入命令“myip”,如下所示

在此输入图像描述

相关内容