2013-02-21 4 views
0

Просто спросите, есть ли способ получить MAC-адрес локальной машины в виде строки. Мне нужно сохранить MAC-адрес локальной машины в класс домена. Я попытался с помощью этого кода, чтобы получить мой Mac адрес:Получение адреса Mac в Groovy

String address = "ifconfig".execute().text() 

Но эта линия также возвращает много подробностей о моем IP-адресе, все, что мне нужно, чтобы получить это MAC-адрес, который находится после подстроки «HWaddr ». Я думаю, если бы я мог извлечь эту подстроку, используя регулярное выражение, но я не уверен, как это сделать.

ответ

5

Вы можете получить MAC-адрес для интерфейса с использованием java.net.NetworkInterface. Обратите внимание, что возможно иметь несколько аппаратных сетевых интерфейсов, поэтому возможно иметь более одного MAC-адреса. Кроме того, у большинства машин будет хотя бы один интерфейс без аппаратного адреса: интерфейс loopback.

Это позволит получить список всех МАС-адреса в виде строки, в том числе нулей для интерфейсов без MAC-адрес:

import java.net.NetworkInterface 
def macs = NetworkInterface.networkInterfaces.collect { iface -> 
    iface.hardwareAddress?.encodeHex().toString() 
} 
+2

Или: 'NetworkInterface.networkInterfaces * .hardwareAddress * .collect {string.Format (' % 02x ', it)} *. Join (': ') 'помещает двоеточия в :-) –

0

Вы можете использовать NetworkInterface, чтобы получить эту информацию, особенно метод getHardwareAddress() которые возвращают байтовый массив