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

UpT*_*eek 2 networking linux bash

我想知道是否可以动态读取网络接口的 IP 地址以在 bash 脚本中使用。就像是:

#!/bin/bash
MYPUBLICIP= get_eth0_address
MYPRIVATEIP= get_eth0:0_address
Run Code Online (Sandbox Code Playgroud)
  • 我该怎么办?
  • 是否可以区分 eth0 和虚拟 eth0:0?

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

Sma*_*ger 5

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

ifconfig 让我们指定一个接口,但解析起来有点烦人:

ifconfig eth0:0 |awk -F':| ' '/inet addr/{print $13}'
Run Code Online (Sandbox Code Playgroud)

编辑

ip方式可以有更多的选择性AWK当然,进行管理:

ip -o -4 addr sh |awk '/eth0:0/{print $4}'
Run Code Online (Sandbox Code Playgroud)