2

我正在尝试在 CentOS 6.4 上使用 Bash 来检索使用 AWK 附加到 IP 地址的网络接口名称。我有一些来自 Solaris 机器的命令,但我不确定如何将其转换为 Linux 输出。

该命令如下所示:

ifconfig -a | awk '
    $1 ~ /:/    {split($1,nic,":"); 
                     lastif=sprintf("%s:%s",nic[1],nic[2]);}
    $2 == "'$1'"    { print lastif ; exit; }

    '

它是脚本的一部分,因此它采用命令行参数monitor.sh x.x.x.x y.y.y.y,并使用第一个 xxxx 获取接口名称,然后使 $1 == $2 以便稍后可以 ping yyyy。我猜想在 Solaris 中的ifconfig -a输出与 CentOS 不同。如果 IP 和接口在同一行,我可以获得接口名称,但在 linux 中,它们在两条不同的行上。有任何想法吗。

4

2 回答 2

3

我没有 CentOS,但在 RHEL 中,IP 地址被列为 inet 地址。我相信他们应该是一样的。

以下命令应为您提供具有 IP 地址的接口名称。

export iface=$(ifconfig | grep -B1 "inet addr:x.x.x.x" | awk '$1!="inet" && $1!="--" {print $1}')

echo "$iface" # To get the interface name for x.x.x.x ip

这个应该显示 IP,包括 localhost :

ifconfig | grep "inet addr:" | sed -e 's/addr:/addr: /g' | awk '{print $3}'
于 2013-08-20T17:28:34.727 回答
1

获取 127.0.0.1(或任何其他 IP)的 ifname

ifconfig | awk '/127.0.0.1/ {print $1}' RS="\n\n"
lo

获取ip:

ifconfig | awk -F"[ :]+" '/inet addr:/ {print $4}'

发布 ifconfig 的输出,我可以帮助您微调您的操作系统

于 2013-08-20T20:49:21.430 回答