Linux/Unix *** 作系统熟悉的人都通常是用console命令控制台来进行相应的 *** 作。 Linux/Unix *** 作系统查看网卡mac地址的方法可以通过以下命令获得:
1ifconfig -a
2ip link show
3ip address show
import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
/
与系统相关的一些常用工具方法
@author stephen
@version 100
/
public class SystemTool {
/
获取当前 *** 作系统名称
return *** 作系统名称 例如:windows xp,linux 等
/
public static String getOSName() {
return SystemgetProperty("osname")toLowerCase();
}
/
获取unix网卡的mac地址
非windows的系统默认调用本方法获取如果有特殊系统请继续扩充新的取mac地址方法
@return mac地址
/
public static String getUnixMACAddress() {
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = RuntimegetRuntime()exec("ifconfig eth0");// linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReaderreadLine()) != null) {
index = linetoLowerCase()indexOf("hwaddr");// 寻找标示字符串[hwaddr]
if (index >= 0) {// 找到了
mac = linesubstring(index +"hwaddr"length()+ 1)trim();// 取出mac地址并去除2边空格
break;
}
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReaderclose();
}
} catch (IOException e1) {
e1printStackTrace();
}
bufferedReader = null;
process = null;
}
return mac;
}
/
获取widnows网卡的mac地址
@return mac地址
/
public static String getWindowsMACAddress() {
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = RuntimegetRuntime()exec("ipconfig /all");// windows下的命令,显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReaderreadLine()) != null) {
index = linetoLowerCase()indexOf("physical address");// 寻找标示字符串[physical address]
if (index >= 0) {// 找到了
index = lineindexOf(":");// 寻找":"的位置
if (index>=0) {
mac = linesubstring(index + 1)trim();// 取出mac地址并去除2边空格
}
break;
}
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReaderclose();
}
} catch (IOException e1) {
e1printStackTrace();
}
bufferedReader = null;
process = null;
}
return mac;
}
/
测试用的main方法
@param argc
运行参数
/
public static void main(String[] argc) {
String os = getOSName();
Systemoutprintln(os);
if(osstartsWith("windows")){
//本地是windows
String mac = getWindowsMACAddress();
Systemoutprintln(mac);
}else{
//本地是非windows系统 一般就是unix
String mac = getUnixMACAddress();
Systemoutprintln(mac);
}
}
}
-------------------------------------------------------------------------
本程序可以正确获得本机IP地址和网卡"eth0"的MAC地址,已经在windowsXP和ubuntu-Linux上测试过
(注意:如果有多块网卡,可能出错)
下面给出代码:
import javanet;import javautil;
public class Test { public static void main(String[] args) { Test t = new Test(); Systemoutprintln(tgetLocalIP()); Systemoutprintln(tgetMacAddr()); }
public String getMacAddr() { String MacAddr = ""; String str = ""; try { NetworkInterface NIC = NetworkInterfacegetByName("eth0"); byte[] buf = NICgetHardwareAddress(); for (int i = 0; i < buflength; i++) { str = str + byteHEX(buf[i]); } MacAddr = strtoUpperCase(); } catch (SocketException e) { eprintStackTrace(); Systemexit(-1); } return MacAddr; }
public String getLocalIP() { String ip = ""; try { Enumeration<> e1 = (Enumeration<>) NetworkInterface getNetworkInterfaces(); while (e1hasMoreElements()) { NetworkInterface ni = (NetworkInterface) e1nextElement(); if (!nigetName()equals("eth0")) { continue; } else { Enumeration<> e2 = nigetInetAddresses(); while (e2hasMoreElements()) { InetAddress ia = (InetAddress) e2nextElement(); if (ia instanceof Inet6Address) continue; ip = iagetHostAddress(); } break; } } } catch (SocketException e) { eprintStackTrace(); Systemexit(-1); } return ip; }
/ 一个将字节转化为十六进制ASSIC码的函数 / public static String byteHEX(byte ib) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; char[] ob = new char[2]; ob[0] = Digit[(ib >>> 4) & 0X0F]; ob[1] = Digit[ib & 0X0F]; String s = new String(ob); return s; }}
①命令ifconfig -a 其中 HWaddr字段就是MAC地址
②或者使用grep过滤只显示MAC地址:
ifconfig -a |grep -i hw
#只输出当前电脑上所有网卡的mac地址(不显示IP等信息)
#eth0 Link encap:Ethernet HWaddr ----这是有线网卡的MAC地址
#wlan0 Link encap:Ethernet HWaddr ----这是无线网卡的MAC地址
获取服务器mac 复制代码 代码如下: <php / 获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 / class GetmacAddr{ var $result = array(); // 返回带有MAC地址的字串数组 var $macAddr; /构造/ function __construct($osType){ switch ( strtolower($osType) ){ case "unix": break; case "solaris": break; case "aix": break; case "linux": { $this->for_linux_os(); }break; default: { $this->for_windows_os(); }break; } $temp_array = array(); foreach($this->result as $value){ if(preg_match("/[0-9a-f][0-9a-f][:-]""[0-9a-f][0-9a-f][:-]""[0-9a-f][0-9a-f][:-]""[0-9a-f][0-9a-f][:-]""[0-9a-f][0-9a-f][:-]""[0-9a-f][0-9a-f]/i",$value, $temp_array ) ){ $this->macAddr = $temp_array[0]; break; } } unset($temp_array); return $this->macAddr; } /linux系统中获取方法/ function for_linux_os(){ @exec("ifconfig -a", $this->result); return $this->result; } /win系统中的获取方法/ function for_windows_os(){ @exec("ipconfig /all", $this->result); if ( $this->result ) { return $this->result; } else { $ipconfig = $_SERVER["WINDIR"]"\system32\ipconfigexe"; if(is_file($ipconfig)) { @exec($ipconfig" /all", $this->result); } else { @exec($_SERVER["WINDIR"]"\system\ipconfigexe /all", $this->result); return $this->result; } } } } > 获取客户端mac地址: 复制代码 代码如下: @exec("arp -a",$array); //执行arp -a命令,结果放到数组$array中 foreach($array as $value){ //匹配结果放到数组$mac_array if(strpos($value,$_SERVER["REMOTE_ADDR"]) && preg_match("/(:[0-9A-F]{2}[:-]){5}[0-9A-F]{2}/i",$value,$mac_array)){ $mac = $mac_array[0]; break; } } echo $mac; 注:客户端获取的mac不能在本机测试,只能用别的电脑访问才能输出
想读取网卡芯片里的MAC地址我不会,不过你可以手动修改MAC地址(重启电脑后依然有效)。适合RedHad系的Linux,ubuntu之类的直接普通用户下在每行命令前加个sudo
[root@PC-NAME]#emacs
/etc/sysconfig/network-scripts/ifcfg-eth
###其中eth要看你的网卡设备号。如何查看? 通过这个命令#ifconfig
-a
将其中的
MACADDR=00:00:00:00:00:00
改成你想要的。
[root@PC-NAME]#/etc/initd/network stop
[root@PC-NAME]#/etc/initd/network start
###你不一定要用emacs文本修改工具修改配置文件,也可用Vi
。
我也给一个我的答案,供大家参考
利用ifconfig这个命令就可以显示所有网络相关的基本信息
当然在此基础之上做一些文本处理,就可以直接输出想要
的IP和MAC信息,代码如下
以上就是关于linux网卡怎么看mac地址全部的内容,包括:linux网卡怎么看mac地址、有谁知道linux系统环境下,怎样在后台才能获取到mac地址、linux下怎么提取本机真实mac地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)