如果我想显示分配给 eth1 的 IP 地址,如何在 Bash 中执行此操作?
答案1
尝试一下(Linux)
/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2| cut -d' ' -f1
或者这个(Linux)
/sbin/ifconfig eth0 | awk -F ' *|:' '/inet addr/{print $4}'
或者这个(*BSD)
ifconfig bge0 | grep 'inet' | cut -d' ' -f2
或者这个(Solaris 10)
ifconfig e1000g0 | awk '/inet / {print $6}'
显然,更改接口名称以匹配您想要从中获取信息的名称。
答案2
正如@Manuel 提到的,ifconfig
它已经过时了,并且ip
是今后推荐的方法。
ip -f inet addr show eth1
并使用@bleater 的 sed 或@Jason H. 的 awk 来过滤输出(取决于您是否需要掩码)
ip -f inet addr show eth1 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'
ip -f inet addr show eth1 | awk '/inet / {print $2}'
答案3
在 Linux 系统上:
hostname --all-ip-addresses
只会提供给你 IP 地址。
在 Solaris 系统上使用:
ifconfig e1000g0 | awk '/inet / {print $2}'
答案4
更好的方法是:从命令“ip”获取 ip 地址,因为“ifconfig”已经过时了。否则,使用“ifconfig”会遇到问题,因为 ifconfig 的输出与语言有关。
我使用此命令来获取所有 IP(IPv4):
ip addr show | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"