VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 831|回复: 3

linux和unix下获取网卡Mac地址方法

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-16 15:30:02 | 显示全部楼层 |阅读模式
各位,有谁做过在linux和unix下获取Mac地址方法,用java程序怎么写?
有经验的提供一点参考,谢谢!
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-12 14:00:01 | 显示全部楼层
java是不分操作系统的,跨平台的!
java可以取得mac地址的.就是用process流.

import java.io.*;

public class  GetMac
{
    //通过IP获取网卡地址
        private String getMacAddressIP(String remotePcIP){
      String str="";
      String macAddress="";
      try {
           Process pp= Runtime.getRuntime().exec ("nbtstat -A " + remotePcIP);
           InputStreamReader ir = new InputStreamReader(pp.getInputStream());
           LineNumberReader input = new LineNumberReader (ir);
           for (int i = 1; i <100; i++)
              {
               str=input.readLine();
               if (str!=null)
                 {
                   if(str.indexOf("MAC Address")>1)
                     { macAddress=str.substring(str.indexOf("MAC Address")+14,str.length());
                       break;
                    }
                 }
              }
          }
      catch (IOException ex) {}
      return macAddress;
  }
  //通过机器名获取网卡地址
  private String getMacAddressName(String remotePcIP){
      String str="";
      String macAddress="";
      try {
           Process pp= Runtime.getRuntime().exec ("nbtstat -a " + remotePcIP);
           InputStreamReader ir = new InputStreamReader(pp.getInputStream());
           LineNumberReader input = new LineNumberReader (ir);
           for (int i = 1; i <100; i++)
              {
               str=input.readLine();
               if (str!=null)
                 {
                   if(str.indexOf("MAC Address")>1)
                     { macAddress=str.substring(str.indexOf("MAC Address")+14,str.length());
                       break;
                    }
                 }
              }
          }
      catch (IOException ex) {}
      return macAddress;
  }


        public static void main(String[] args)
        {
        GetMac getmac;
        getmac=new GetMac();
                String mac="";
        mac=getmac.getMacAddressIP("10.67.0.6");
        System.out.println(mac);
        mac=getmac.getMacAddressName("gxy ");
        System.out.println(mac);
        }
}
回复

使用道具 举报

0

主题

13

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-14 22:15:01 | 显示全部楼层
wh_family 命令还是有点问题的,我觉得应该是ifconfig eth0而不是netstat -A
然后下面的str.indexOf("MAC Address")改成str.indexOf("HWaddr")
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-4 16:45:01 | 显示全部楼层
不错不错,谢谢楼上的良好建议!
我是想把我的软件和用户的网卡绑定,这样用户就不会拿我的软件乱给别人免费用了,起到控制作用。
这句话Process pp= Runtime.getRuntime().exec ("nbtstat -A " + remotePcIP);中的命令语句在任何平台下都能获取Mac地址么?其实我是想找个通用的命令而已,不然用户换了平台我监控不到Mac地址就完蛋了。
不过楼上的我试一下,万分感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表