zoukankan      html  css  js  c++  java
  • java获取操作系统的MAC地址和硬盘序列号

    1.判断操作系统是Windows还是Linux

    1     private static Boolean isLinux() {
    2         String os = System.getProperty("os.name");
    3         log.info("os.name: {}", os);
    4         return !os.toLowerCase().startsWith("win");
    5     }

    2. Linux:

      获取MAC地址:

     1     private static String getMACAddressByLinux() throws Exception {
     2         String[] cmd = {"ifconfig"};
     3 
     4         Process process = Runtime.getRuntime().exec(cmd);
     5         process.waitFor();
     6 
     7         BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
     8         StringBuffer sb = new StringBuffer();
     9         String line;
    10         while ((line = br.readLine()) != null) {
    11             sb.append(line);
    12         }
    13 
    14         String str1 = sb.toString();
    15         String str2 = str1.split("ether")[1].trim();
    16         String result = str2.split("txqueuelen")[0].trim();
    17         log.info("Linux MacAddress is: {}", result);
    18         br.close();
    19 
    20         return result;
    21     }

      获取硬盘序列号:

     1     private static String getIdentifierByLinux() throws Exception {
     2         String[] cmd = {"fdisk", "-l"};
     3 
     4         Process process = Runtime.getRuntime().exec(cmd);
     5         process.waitFor();
     6 
     7         BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
     8         StringBuffer sb = new StringBuffer();
     9         String line;
    10         while ((line = br.readLine()) != null) {
    11             sb.append(line);
    12         }
    13 
    14         String str1 = sb.toString();
    15         String str2 = str1.split("identifier:")[1].trim();
    16         String result = str2.split("Device Boot")[0].trim();
    17         log.info("Linux Identifier is: {}", result);
    18         br.close();
    19 
    20         return result;
    21     }

    3. Windows:

      获取MAC地址: (默认获取第一张网卡)

     1     private static String getMACAddressByWindows() throws Exception {
     2         String result = "";
     3         Process process = Runtime.getRuntime().exec("ipconfig /all");
     4         BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
     5 
     6         String line;
     7         int index = -1;
     8         while ((line = br.readLine()) != null) {
     9             index = line.toLowerCase().indexOf("物理地址");
    10             if (index >= 0) {// 找到了
    11                 index = line.indexOf(":");
    12                 if (index >= 0) {
    13                     result = line.substring(index + 1).trim();
    14                 }
    15                 break;
    16             }
    17         }
    18         log.info("Windows MACAddress is: {}", result);
    19         br.close();
    20         return result;
    21     }

      获取硬盘序列号: (默认获取C盘)

     1     private static String getIdentifierByWindows() throws Exception {
     2         String result = "";
     3         Process process = Runtime.getRuntime().exec("cmd /c dir C:");
     4         BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
     5 
     6         String line;
     7         while ((line = br.readLine()) != null) {
     8             if (line.indexOf("卷的序列号是 ") != -1) {
     9                 result = line.substring(line.indexOf("卷的序列号是 ") + "卷的序列号是 ".length(), line.length());
    10                 break;
    11             }
    12         }
    13         log.info("Windows Identifier is: {}", result);
    14         br.close();
    15         return result;
    16     }

    4. 测试:

     1     public static void main(String[] a) throws Exception {
     2         // 判断是Linux还是Windows
     3         if (isLinux()) {
     4             // Linux操作系统
     5             String macAddress = getMACAddressByLinux();
     6             System.out.println("Linux macAddress: " + macAddress);
     7             String Identifier = getIdentifierByLinux();
     8             System.out.println("Linux Identifier: " + Identifier);
     9         } else {
    10             // Windows操作系统
    11             String macAddress = getMACAddressByWindows();
    12             System.out.println("Windows macAddress: " + macAddress);
    13             String Identifier = getIdentifierByWindows();
    14             System.out.println("Windows Identifier: " + Identifier);
    15         }
    16     }

     注意事项:

      在Windows环境使用javac Test.java 命令编译该java文件时, 需指定编码, 应使用以下命令:

    1 javac -encoding UTF-8 Test.java
  • 相关阅读:
    二叉树操作
    jQuery下拉列表插件 jQselectable
    DeDeCMS常用标签代码整理汇总
    用DEDECMS做手机网站
    DedeCMS模板文件结构
    用aspnet_compiler编译(发布)网站
    把网站提交到搜索引擎
    jGrowl 制作消息弹出框
    关于标签 XUACompatible
    jQuery下拉框插件 FlexBox
  • 原文地址:https://www.cnblogs.com/yanwu0527/p/8990176.html
Copyright © 2011-2022 走看看