Definir comando:
windows cmd = " cmd . exe/c echo % NÚMERO _ OF _ PROCESSORS % " ; //Funciones especiales de Windows
SolarisCmd = {"/bin/sh ", "-c ", "/usr/sbin/psrinfo WC-l " };
AIXCmd = {"/bin/sh ", "-c ", "/usr/sbin/lsdev -Cc procesador | WC-l " };
HPUXCmd = {"/ bin/sh ", "-c ", " echo \ " map \ " |/usr/sbin/cstm | grep CPU-l " };
LinuxCmd = {"/bin/sh " , "-c " , " cat/proc/CPU info | grep ^process | WC-l " };
Luego determine el sistema:
os = System.getProperty(" os.nombre "). toLowerCase();
Llame a diferentes comandos según los diferentes sistemas operativos.
*/
Importar Java .io .io excepción;
Importar Java io . inputstreamreader;
Importar Java . io . lector de números de línea;
Clase pública GetMACAddress
{
Cadena pública getMACAddress(String ipAddress)
{
Cadena str = " ", strMAC = " ", macAddress =
Probar
{
Proceso pp = Runtime.getRuntime().
exec(" nbtstat-a "+dirección IP);
InputStreamReader IR = nuevo InputStreamReader(PP . getinputstream());
entrada del lector de número de línea = nuevo lector de número de línea(IR );
for(int I = 1;i<100;i++)
{
str = input . if(str!=null)
{
if(str . index of(" Dirección MAC ")& gt; 1)
{
strMAC = str . substring(str . index of(" Dirección MAC ")+14, str . length()
Break
}
}
}
}
Catch (IOException ex)
{
Devuelve " ¡No se puede obtener la dirección MAC!";
}
//
if(strmac . length()<17)
{
Devuelve "¡Error!";
}
macAddress = strMAC.substring(0, 2) +":"
+ strMAC.substring(3,5) +":"
+ strMAC.substring(6,8) +":"
+ strMAC.substring(9,11 ) + ":"
+ strMAC.substring(12,14) +":"
+ strMAC.substring(15,17);
/ /
Devolver dirección mac
}
Public static void main(String[] args)
{
getmac dirección dirección getmac = nueva dirección getmac();
system . println(dirección getmac . dirección getmac(" 172.18 . 8 . 225 ")); p>
{
Java idioma proc = tiempo de ejecución.
exec(" ipconfig/all ");
InputStream istr = proc proc ;
byte[] datos = nuevo byte[1024];
istr.read(data);
String netdata = nueva cadena (datos);
System.out.println("Su dirección Mac = "+procAll(net data));
}
Captura (IOException e)
{
sistema fuera . println(" error = "+e );
}
}
Cadena estática pública procAll(string str)
{
Devuelve proc stringend(procFirstMac (procAddress(str));
}
Cadena estática pública procAddress(string str)
{
int indexof = str. indexOf("dirección física");
if(índice de & gt; 0)
{
Devuelve str.substring (indexof, str . length( ));
}
Cadena de retorno
}
Cadena estática pública procFirstMac(String str)
{
int índice de = str . índice de(":");
if(índice de & gt; 0) p>
{
Devuelve str.substring(indexof + 1, str.length()). trim();
}
Devuelve cadena de caracteres;
}
Cadena estática pública procStringEnd(String str)
{
int index of = str index of( " \ r ");
if(índice de >0)
{
Devuelve str.substring(0, índice de).
trim();
}
Cadena de retorno;
}
}
Importar Java .util. vector;
Clase GetNetMAC
{
//Longitud de la dirección física de la tarjeta de red
Estática privada final int _ longitud física = 16;
Public static void main(String[] args)
{
//Ingrese la dirección IP de su computadora
system. out .println(" La dirección MAC es:\ t "+getPhysicalAddress());
}
Cadena pública estática getPhysicalAddress()
{< / p>
GetNetMACShell shell = new GetNetMACShell();
cadena cmd = " cmd . exe/c ipconfig/all ";
Resultado vectorial;
resultado = shell . ejecutar(cmd);
Devuelve parse cmd(resultado . tostring());
}
//Analizar de la cadena La cadena requerida.
Cadena privada estática parseCmd(string s)
{
String find = "Dirección física...
:";
int buscar índice = s . índice de(buscar);
if(findIndex == -1)
{
Devuelve "no encontrado";
}
Otros
{
Devuelve s subcadena(buscar índice+buscar . longitud ()+1, buscar índice+buscar longitud()+1+_ longitud física);
}
}
}
Importar Java.io.bufferedreader;
Importar Java.io.data inputstream;
Importar Java.io.inputstreamreader;
Importar Java util. vector;
Clase pública GetNetMACShell
{
Proceso de proceso privado = null
Ejecución de vector público (comando de shell de cadena)
{
Pruebe
{
inicio(comando shell);
Vector vResult = nuevo Vector( );
flujo de entrada de datos en = nuevo flujo de entrada de datos(proceso . getinputstream());
lector en búfer lector = nuevo lector en búfer (nuevo InputStreamReader(in));
cadena;
hacer
{
línea = lector . readline();
if(línea == nulo)
{
Romper;
}
Otro
{
vresult .añadir elemento( línea);
}
}
mientras(verdadero);
lector close();
p>
Devolver vResult
}
Captura (Excepción e)
{
//Error
Devolver nulo
}
}
Inicio de anulación pública (String shellCommand)
{
prueba
{
if (¡proceso! = vacío)
{
kill();
}
runtime sys = runtime . >
proceso = sys . exec(comando shell);
}
Capturar (excepción e)
{
sistema . fuera . println(e . tostring());
}
}
Public void kill()
{
si (¡proceso! = nulo)
{
proceso destruir();
proceso = nulo
. }
}
}
Pruébalo :)