2013-11-20 16 views
1

interface-bounding:Linux綁定驅動程序提供了將多個網絡接口聚合到單個邏輯綁定接口的方法。邏輯有界接口將只有一個MAC地址,它由原始接口之一限定。 ifconfig將顯示具有相同MAC地址的所有原始接口。如何在Java中的linux界面過程中找到原始MAC地址?

現在,我將在Java中找到每個接口的原始MAC地址。如何?

我已經確認我無法通過NetworkInterface.getInterfaceAddresses()NetworkInterface.getSubInterfaces()

任何其他方式找到他們呢?

UPDATE:

邊界之前: enter image description here

後綁定ETH1和ETH2到bound0: enter image description here

Java代碼中顯示接口信息:

ALL interfaces:[name:bond0 (bond0), name:eth0 (eth0), name:lo (lo)] 
they are [{netIf bond0,host 192.168.122.38,mac 525400F801B9,ip 192.168.122.38}, {netIf eth0,host hatest02,mac 5254008C5B48,ip 192.168.10.38}] 
+0

你嘗試'NetworkInterface.getHardwareAddress()'如BLOS提到帖子:http://www.mkyong.com/java/how-to-get-mac-address-in-java/? – deterministicFail

+0

是的,我爲NetworkInterface.getNetworkInterfaces()返回的每個NetworkInterface做了這個,而我找不到另一個NetworkInterface。 – BlackJoker

+1

你也可以從java調用ifconfig並解析輸出 – deterministicFail

回答

-2

的NetworkInterface是沒用,恕我直言。我從來沒有從它得到可靠的信息。執行ifconfig並解析輸出,這是您的最佳選擇。

更新:真棒,有人downvoted。因此,發表一個答案並展示什麼可行,因爲我支持斷言NetworkInterface不可靠。能夠顯示結合信息的ifconfig的現代替代品是ip link show type bond

+0

ifconfig將隱藏無效的從接口的MAC地址,如問題主體的UPDATE部分中所述。並且,Fedora&sles中的ifconfig具有不同的輸出格式。 – BlackJoker

0
cat /proc/net/bonding/bond0 

會告訴你原來的MAC對保稅接口

全力輸出,更少的私人數據如下:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) 
Bonding Mode: fault-tolerance (active-backup) 
Primary Slave: None 
Currently Active Slave: eno49 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 0 
Down Delay (ms): 0 

Slave Interface: eno49 
MII Status: up 
Speed: 1000 Mbps 
Duplex: full 
Link Failure Count: 0 
Permanent HW addr: 28:80:23:xx:xx:ec 
Slave queue ID: 0 

Slave Interface: eno50 
MII Status: down 
Speed: Unknown 
Duplex: Unknown 
Link Failure Count: 0 
Permanent HW addr: 28:80:23:xx:xx:ed 
Slave queue ID: 0*