我可以在 Bash 脚本中使用分配给虚拟网络接口的 IP 吗?

我可以在 Bash 脚本中使用分配给虚拟网络接口的 IP 吗?

我想知道是否可以动态读取网络接口的 IP 地址以供 bash 脚本使用。例如:

#!/bin/bash
MYPUBLICIP= get_eth0_address
MYPRIVATEIP= get_eth0:0_address
  • 我该如何处理这个问题?
  • 是否可以区分 eth0 和虚拟 eth0:0?

[背景] 我正在尝试编写一个脚本,将各种规则应用于一组 VPS 的 iptables。我试图避免摆弄每台机器的单独 IP。

答案1

ip将始终返回物理接口的所有地址记录,即使您指定了虚拟接口。

ifconfig让您指定单个接口,但解析起来有点烦人:

ifconfig eth0:0 |awk -F':| ' '/inet addr/{print $13}'

编辑

ip当然,可以使用更具选择性的 awk 来管理这种方式:

ip -o -4 addr sh |awk '/eth0:0/{print $4}'

答案2

就像是

ip -4 -o addr show dev eth0 | sed 's/\// /g' | awk '{print $4}'

应该会给你相关接口的裸IP地址。

相关内容