如何尽可能轻松地将 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
如果你有一个配置的接口(环回除外),请尝试一下。