问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有谁知道linux系统环境下,怎样在后台才能获取到mac地址?

发布网友 发布时间:2022-04-23 12:26

我来回答

2个回答

热心网友 时间:2022-05-26 12:22

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* 与系统相关的一些常用工具方法.
*
* @author stephen
* @version 1.0.0
*/
public class SystemTool {

/**
* 获取当前操作系统名称.
* return 操作系统名称 例如:windows xp,linux 等.
*/
public static String getOSName() {
return System.getProperty("os.name").toLowerCase();
}

/**
* 获取unix网卡的mac地址.
* 非windows的系统默认调用本方法获取.如果有特殊系统请继续扩充新的取mac地址方法.
* @return mac地址
*/
public static String getUnixMACAddress() {
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = Runtime.getRuntime().exec("ifconfig eth0");// linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReader.readLine()) != null) {
index = line.toLowerCase().indexOf("hwaddr");// 寻找标示字符串[hwaddr]
if (index >= 0) {// 找到了
mac = line.substring(index +"hwaddr".length()+ 1).trim();// 取出mac地址并去除2边空格
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
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 = Runtime.getRuntime().exec("ipconfig /all");// windows下的命令,显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReader.readLine()) != null) {
index = line.toLowerCase().indexOf("physical address");// 寻找标示字符串[physical address]
if (index >= 0) {// 找到了
index = line.indexOf(":");// 寻找":"的位置
if (index>=0) {
mac = line.substring(index + 1).trim();// 取出mac地址并去除2边空格
}
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
bufferedReader = null;
process = null;
}

return mac;
}

/**
* 测试用的main方法.
*
* @param argc
* 运行参数.
*/
public static void main(String[] argc) {
String os = getOSName();
System.out.println(os);
if(os.startsWith("windows")){
//本地是windows
String mac = getWindowsMACAddress();
System.out.println(mac);
}else{
//本地是非windows系统 一般就是unix
String mac = getUnixMACAddress();
System.out.println(mac);
}
}
}

-------------------------------------------------------------------------

本程序可以正确获得本机IP地址和网卡"eth0"的MAC地址,已经在windowsXP和ubuntu-Linux上测试过
(注意:如果有多块网卡,可能出错)
下面给出代码:
import java.net.*;import java.util.*;
public class Test { public static void main(String[] args) { Test t = new Test(); System.out.println(t.getLocalIP()); System.out.println(t.getMacAddr()); }
public String getMacAddr() { String MacAddr = ""; String str = ""; try { NetworkInterface NIC = NetworkInterface.getByName("eth0"); byte[] buf = NIC.getHardwareAddress(); for (int i = 0; i < buf.length; i++) { str = str + byteHEX(buf[i]); } MacAddr = str.toUpperCase(); } catch (SocketException e) { e.printStackTrace(); System.exit(-1); } return MacAddr; }
public String getLocalIP() { String ip = ""; try { Enumeration<?> e1 = (Enumeration<?>) NetworkInterface .getNetworkInterfaces(); while (e1.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) e1.nextElement(); if (!ni.getName().equals("eth0")) { continue; } else { Enumeration<?> e2 = ni.getInetAddresses(); while (e2.hasMoreElements()) { InetAddress ia = (InetAddress) e2.nextElement(); if (ia instanceof Inet6Address) continue; ip = ia.getHostAddress(); } break; } } } catch (SocketException e) { e.printStackTrace(); System.exit(-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; }}

热心网友 时间:2022-05-26 13:40

你是要啥MAC地址?本机的?如果是本机的话可以用命令ipconfig得到包含mac地址的网络参数,在提取出啦就是追问我问的是具体代码怎么写!

追答找到一个更简单的方法来实现:cat /sys/class/net/eth0/address 注意是否需要更换网卡名称。Ubuntu 下通过

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何用易语言实现QQ登录器的QQ号空了就出现“QQ号为空,请输入QQ号... 介绍几首最新的网络歌手唱得网络红歌呗。。谢谢啊 求推荐几首好听的歌,要和徐良风格差不多的 ...男女合唱的】最好多推荐几首,试到一首好听的 有什么蛮好听的新歌吗?网络歌手、非主流的,像汪苏泷、徐良、阿悄他们的... 关于Guitar Rig 4的两个问题,求解答。。。 右脚跟疼是什么原因引起的 男人右脚后跟筋疼的原因 右脚跟痛 我右脚跟腱痛怎么治呀,两个多月前崴了一下,找人捏了几次,但现在跟腱一... 胶水的主要成分是什么?为什么会有粘性? 石器时代起源新手宠物培养攻略 哪些宠物值得培养 吸血的堕落起源宠物怎么获得 用牛奶做胶水需用哪些原料 急!宠物美容起源于哪个国家? 宠物美容的起源 请问502胶水是用哪些原料制成。 养荷兰猪好还是养仓鼠好? 胶水的主要成分是什么?对人体构成怎样的伤害呢? 关于龙腾世纪 起源召唤宠物的自动行为模式设定的保存。 电脑配置显卡要求建议要800W以上的电源,但是我一个i5不超频的需要到这么多瓦的电源吗? 做胶水的化工原料是什么 石器时代起源传说宠物怎么快速获得 宠物猪起源于哪个国家? 宿舍限电800W,我们一个500W电源的台式机,3台笔记本,可以吗 电脑台式机电源额定800W,但是配件所用实际功耗是450W,这时候电源功耗是额定功耗还是实际功耗 宠物的起源 801胶水是怎样配方的 如果电脑的电源用的是800W的而其中的配置没有到800W的水平,那电脑是耗电800W还是和配置相一致. 电脑电源800W家用怎么样 您好,请问在网上报考自考的网址是哪个网址啊? 自制胶水都需要用到哪些材料? 想要自考本科,网上的教育机构靠谱吗? linux下 网卡 刷新mac地址 石器时代:起源开局宠物哪个好 平民开局宠物推荐 石器时代起源新手宠物培养攻略哪些宠物值得培养三兄弟 我的起源宠物下面的绿条是什么意思? 南京财经大学自考报名的网站这么多,哪个正规点啊? 我的起源猎影枭羽龙在哪 我的起源刷宠物,有时间或者什么规律吗? 成人自考,成人高考,网络教育,电大哪个比较好 哪个就软件里可以免费得我的起源中的宠物? 成人自考 《我的起源》起源宠物刷新规律是什么? 明世教育机构是成人自考是真的么? 如何手持身份证拍照 考研手持身份证照片要求 我的手持身份证照片被别人得到了,会有什么信用方面危险 身份证正反面和手持身份证照片泄露了有什么危害啊? 手持身份证能不能随便拍给别人