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

我想知道是否有可能dynamic读取networking接口的IP地址在bash脚本中使用。 就像是:

#!/bin/bash MYPUBLICIP= get_eth0_address MYPRIVATEIP= get_eth0:0_address 
  • 我将如何去做这件事?
  • 是否有可能区分eth0和虚拟eth0:0?

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

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

ifconfig让我们指定一个单一的接口,但是更麻烦的parsing:

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

编辑

当然, ip方式可以用更多select性的awk进行pipe理:

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

就像是

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

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