在 Shell 脚本中读取 UNIX / Linux 系统 IP 地址
在 shell 脚本中读取IP 地址需要花费很多时间。但是,不同的 Linux 发行版将 IP 地址存储在不同的文件中。如果您希望在不同的 UNIX 类操作系统(如 Solaris 或 FreeBSD)下运行脚本,则需要使用 ifconfig 命令。ifconfig 命令不仅用于配置网络接口,还可用于获取网络 IP、网络掩码等信息。
Linux ifconfig 示例
键入以下命令:
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
FreeBSD/OpenBSD ifconfig 示例
键入以下命令:
ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'
Sun / Oracle Solaris Unix 示例:
键入以下命令:
ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}'
注意:如果您是非root用户,请使用/sbin/ifconfig完整路径。
它是如何工作的?
您正在使用 ifconfig 命令并将其输出发送到 shell 管道。管道是一组由其标准流链接起来的进程,因此每个进程的输出(“stdout”)直接作为下一个进程的输入(“stdin”)。
- ifconfig 命令列出所有网络接口。
- 从 ifconfig 命令的输出中,使用grep 命令(grep 'inet addr:')找出 IPv4 IP 地址。
- 接下来,您不需要环回 IP 地址 (127.0.0.1),因此再次借助 grep –v 反转匹配的方向,以选择所有不匹配的行。
- 最后,使用 awk 命令选择一个 IP 地址。(awk '{print $2}')
另请参阅:read-ip-address.bash 脚本,它从不同的 UNIX/Linux 操作系统读取/查找 IP 地址。