linux - 获取所有 IP 地址的 Bash 脚本

标签 linux bash shell

我正在尝试编写一个 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

最佳答案

ifconfig 已被 ip 废弃。它还具有标志 -o 可以编写易于解析的输出。使用 ip -4 仅显示 IPV4 地址。注意更简单的脚本,它已经排除了环回地址:

ip -o addr | awk '!/^[0-9]*: ?lo|link\/ether/ {print $2" "$4}'

或者如果您不想要网络:

ip -o addr | awk '!/^[0-9]*: ?lo|link\/ether/ {gsub("/", " "); print $2" "$4}'

关于linux - 获取所有 IP 地址的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523872/

相关文章:

linux - 成本大于 10 的产品计数

python - 从 python 脚本在共享库上运行 gcov

bash - Docker在X时间后杀死了一个容器中的无限进程

windows - 如何在 Windows 10 企业版上运行应用程序作为 shell 替换

python - Pexpect回车问题

linux - 扩展名后重命名所有文件

linux - 不小心在 AWS 服务器上运行了 ifdown eth0

c# - java/C#.NET在windows上执行linux操作

string - Bash- 打乱字符串中包含的字符

bash - 如何区分脚本中的 "command substitution"和 "subshell"?