2013-11-20 19 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*