我正在尝试在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
这样的命令行参数,它使用第一个x.x.x.x获取接口名称,然后使$ 1 == $ 2,以便稍后可以ping y.y.y.y。我猜测在Solaris中ifconfig -a
输出与CentOS不同。如果IP和接口在同一行,我可以得到接口名称,但在linux中,它们在两个不同的行上。有任何想法吗。
答案 0 :(得分: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}'
答案 1 :(得分: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的输出,我可以帮助您微调您的操作系统