【发布时间】:2019-08-19 06:33:16
【问题描述】:
我有任务从 ifconfig 中提取 IP 地址和接口列表。
操作系统 FreeBSD
ifconfig 输出:
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:50:56:a5:42:13
inet 192.168.1.5 netmask 0xfffffff0 broadcast 192.168.1.255
inet6 fe80::250:56ff:fea1:4213%em0 prefixlen 64 scopeid 0x1
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:50:56:a1:62:19
inet 172.16.16.16 netmask 0xfffffffc broadcast 172.16.16.255
inet6 fe80::250:56ff:fea1:6229%em1 prefixlen 64 scopeid 0x2
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
br0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:50:56:a1:55:27
inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
inet6 fe80::250:56ff:fea1:5507%em2 prefixlen 64 scopeid 0x3
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
我想要这样的输出:
em0 : 192.168.1.5
em1 : 172.16.16.16
br0: 10.10.10.11
ifconfig | awk '/inet / {split($2,var,"/*"); print $1,":",var[1]}'
ifconfig | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"
ifconfig | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'
目前我只能提取 ip 地址。
非常感谢任何帮助。
【问题讨论】:
-
能否详细说明您遇到的问题?
-
您已经尝试过什么,为什么没有成功。 (只是列出要求并期望其他人为您做这件事是 Stack Overflow 的主题)
-
我没有问题。只想提取所有接口名称和 IP 地址。像这样:em0:192.168.1.5 em1:172.16.16.16 br0:10.10.10.11
-
请将答案放在答案块中。稍后,您可以接受自己的答案。另见How does accepting an answer work?