一尘不染

Bash脚本获取所有IP地址

linux

我正在尝试编写bash脚本来获取服务器上的所有IP地址。该脚本应可在所有主要发行版上使用。这是我所拥有的:

ifconfig | grep 'inet addr:' | awk {'print $2'}

导致:

addr:10.1.2.3
addr:50.1.2.3
addr:127.0.0.1

我如何首先删除addr:前缀?第二,如何排除127.0.0.1


阅读 492

收藏
2020-06-07

共1个答案

一尘不染

不需要grep。这是一种使用方法awk

仅列出地址:

ifconfig | awk -F "[: ]+" '/inet addr:/ { if ($4 != "127.0.0.1") print $4 }'

列出设备和地址:

ifconfig | awk -v RS="\n\n" '{ for (i=1; i<=NF; i++) if ($i == "inet" && $(i+1) ~ /^addr:/) address = substr($(i+1), 6); if (address != "127.0.0.1") printf "%s\t%s\n", $1, address }'
2020-06-07