2013-08-20 39 views
1

我試圖在CentOS 6.4上使用Bash檢索使用AWK連接到IP地址的網絡接口名稱。我有一個來自Solaris機器的命令,但我不確定如何將它轉換爲Linux輸出。使用IP地址和AWK Bash檢索網絡接口的名稱

的命令如下:

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中,它們位於兩條不同的線路上。有任何想法嗎。

+2

發佈一些示例輸入(對awk命令)和期望的輸出。 –

+1

[如何獲取給定與它相關的IP地址的NIC卡的邏輯名稱?](http://stackoverflow.com/questions/17476248/how-to-fetch-the-logical-name-of -a-nic-card-given-the-ip-address-associated-with) – jgb

+0

是的,我做了重複發佈。我沒有正確搜索,也沒有看到答案。它爲我工作。我也想嘗試這些其他建議。 – Pred

回答

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,包括本地主機:

ifconfig | grep "inet addr:" | sed -e 's/addr:/addr: /g' | awk '{print $3}' 
+0

該命令確實顯示了預期的接口。 – Pred

1

歌廳IFNAME爲127.0.0.1(或任何其他IP)

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

獲取IP:

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

發佈ifconfig的輸出,我可以幫你調整你的操作系統