我正在尝试编写bash脚本来获取服务器上的所有IP地址。该脚本应可在所有主要发行版上使用。这是我所拥有的:
bash
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?
addr:
127.0.0.1
不需要grep。这是一种使用方法awk:
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 }'