获取本地ip,dns 以及 mac等ipconfig/all信息代码

import java.io.*;
import java.net.*;
import java.util.*;

public class getMac


{
public static void main(String[] args)

{
//Get IP of local host
String IP = "";
IP = getIP();
System.out.println(IP);
//Get OS type
String OSName = getOSName();
System.out.println("os.name:"+OSName);
//Get IPconfig command
String IPconfig = getIPconfig(OSName);
System.out.println("IPconfig:"+IPconfig);
//Get the configuration of your system
String sysconfig = getSysConfig(IPconfig);
System.out.println("sysconfig:"+sysconfig);
//Get MAC address of eth0
String MAC = getMAC(sysconfig,OSName);
System.out.println("MAC : "+MAC);
String DNS = getDNS(sysconfig,OSName);
System.out.println("DNS : "+DNS);
}
//Get OS type

public static String getOSName()
{
Properties properties = null ;
properties = System.getProperties();
String OSName = properties.getProperty("os.name");
return OSName;
}
//Get IPconfig command

public static String getIPconfig(String OSName)
{
String IPconfig = "";
//RedHat Linux 9.0

if (OSName.compareToIgnoreCase("Linux")==0)
{
IPconfig="ifconfig";
//WINDOWS XP

} else if ( OSName.compareToIgnoreCase("Windows XP")==0 )
{
IPconfig="ipconfig /all";
//other OS that I don't know

} else
{
System.out.println("I don't know your os type !");
System.exit(1);
}
return IPconfig;
}
//Get the configuration of your system

public static String getSysConfig(String ipconfig)
{
String sysconfig = "";

try
{
Process p = Runtime.getRuntime().exec(ipconfig);
InputStreamReader reader = new InputStreamReader(p.getInputStream());
char[] localConfig=new char[2000];
reader.read(localConfig);

for (int i=0;i<2000 ;i++ )
{
sysconfig+=localConfig[i];
}
}

catch (java.io.IOException ex)
{
System.err.println("Problems invoking "+ipconfig);
System.exit(1);
}
return sysconfig;
}
//Get MAC address of eth0
//This function can only be used by getMAC

private static String getmac(String sysconfig,String macstr)
{
String mac = "";
int index=sysconfig.indexOf(macstr);
index+=macstr.length();

for (; index<=sysconfig.length() ;index++ )
{
if (sysconfig.charAt(index)>='0')
if (sysconfig.charAt(index)<='9')
break;
if (sysconfig.charAt(index)>='a')
if (sysconfig.charAt(index)<='f')
break;
if (sysconfig.charAt(index)>='A')
if (sysconfig.charAt(index)<='F')
break;
}
for (int i=0;i<17 ;i++ )

{
mac+=sysconfig.charAt(index);
index++;
}
return mac;
}
//Get MAC address of eth0
//This function can only be used by getMAC

private static String getdns(String sysconfig,String macstr)
{
String dns = "";
int index=sysconfig.indexOf(macstr);
index+=macstr.length();

for (; index<=sysconfig.length() ;index++ )
{
if (sysconfig.charAt(index)>='0')
if (sysconfig.charAt(index)<='9')
break;
if (sysconfig.charAt(index)>='a')
if (sysconfig.charAt(index)<='f')
break;
if (sysconfig.charAt(index)>='A')
if (sysconfig.charAt(index)<='F')
break;
}
for (int i=0;i<15;i++ )

{
dns+=sysconfig.charAt(index);
index++;
}
for (int i=0;i<44;i++ )

{
index++;
}
for (int i=0;i<15;i++ )

{
dns+=sysconfig.charAt(index);
index++;
}
return dns;
}
//Get MAC address of eth0

public static String getMAC(String sysconfig,String OSName)
{
String MAC = "";
//RedHAT Linux 9.0

if (OSName.compareToIgnoreCase("Linux")==0)
{
MAC=getmac(sysconfig,"Ethernet HWaddr");
}
//WINDOWS XP

else if ( OSName.compareToIgnoreCase("Windows XP")==0 )
{
MAC = getmac(sysconfig,"Physical Address");
}

else
{
System.out.println("I don't know your os type !");
System.exit(1);
}
return MAC;
}
//Get MAC address of eth0

public static String getDNS(String sysconfig,String OSName)
{
String DNS = "";
//RedHAT Linux 9.0

if (OSName.compareToIgnoreCase("Linux")==0)
{
DNS=getmac(sysconfig,"Ethernet HWaddr");
}
//WINDOWS XP

else if ( OSName.compareToIgnoreCase("Windows XP")==0 )
{
DNS = getdns(sysconfig,"DNS Servers");
}

else
{
System.out.println("I don't know your os type !");
System.exit(1);
}
return DNS;
}
//Get IP of eth0

public static String getIP()
{
String IP = "";

try
{
Enumeration nifs= NetworkInterface.getNetworkInterfaces();

while (nifs.hasMoreElements())
{
NetworkInterface netIf= (NetworkInterface)nifs.nextElement();
String nifName= netIf.getName();

if (nifName.compareToIgnoreCase("lo")==0)
{
continue ;
}
System.out.print(nifName + " : ");

for (Enumeration nifIp= netIf.getInetAddresses(); nifIp.hasMoreElements();)
{
InetAddress address= (InetAddress)nifIp.nextElement();
IP= address.getHostAddress();
System.out.println(IP);
}
}

} catch (Exception e)
{
e.printStackTrace();
}
return IP;
}
}


