将IP地址分配给环境变量

将IP地址分配给环境变量

如何尽可能轻松地将 eth0 的 IP 地址分配给环境变量(例如 $ip)?

更新:发行版是 Ubuntu Server 12.04 LTS。

答案1

一种更短(而且我发现更简洁)的方法是hostname -i.不再有 ipconfig、ip、sed、awk 等的麻烦。

答案2

使用ip address show才是出路。特别是在任何现代 Linux 系统上,您正在查询的接口可能有多个ifconfig不知道的地址。

$ ip a s eth0 | awk '/inet / {print$2}'
10.13.211.83/24
192.168.17.21/16

当然,如果您不需要网络掩码,只需将其通过管道传递给任意数量的东西,例如:

cut -d/ -f1

注意:在同一系统上,ifconfig 显示:

$ ifconfig em1 | awk '/inet / {print $2}'
10.13.211.83

答案3

没有回答您的具体问题,因为您希望将 IP 分配给已定义的接口,但我认为在此处列出获取外部 IP 的方式(即使在 NAT 之后)以供将来使用可能会很有用:

ip=`wget -qO- ipecho.net/plain`

答案4

另请查看:

ifconfig eth0 | awk '/inet /{print $2}' | cut -f2 -d':'

即使在 Solaris 和 HP-UX 中也可以使用(使用适当的 net dev 而不是eth0)。

至于hostname -i命令,hostname -I如果你有一个配置的接口(环回除外),请尝试一下。

相关内容