• 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址


    1.获取硬盘序列号:

    新建shell脚本文件: identifier.sh, 内容为:

    1 diskdata=`fdisk -l`
    2 diskleft=${diskdata#*"identifier: "}
    3 identifier=${diskleft%%" Device Boot"*}
    4 echo ${identifier}

    调整identifier.sh的权限:

    1 chmod +x identifier.sh

    使用Java代码去调用该shell脚本获取结果

     1 private static String getIdentifier() throws Exception {
     2     String path = "/usr/local/webapp/identifier.sh";
     3     Process process = Runtime.getRuntime().exec(path);
     4     process.waitFor();
     5 
     6     BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
     7     StringBuffer sb = new StringBuffer();
     8     String line;
     9     while ((line = br.readLine()) != null){
    10         sb.append(line);
    11     }
    12     String str = sb.toString();
    13     return str;
    14 }

    2. 获取MAC地址:

    新建shell脚本文件: macAddress.sh, 内容为:

    1 macAddress=`ifconfig | awk -F'[ :]+' '!NF{if(eth!=""&&ip=="")print eth;eth=ip4=""}/^[^ ]/{eth=$1}/inet addr:/{ip=$4}'`
    2 ifconfig ${macAddress[1]} | grep "ether" | awk '{print $2}'

    调整macAddress.sh的权限:

    1 chmod +x macAddress.sh

    使用Java代码去调用该shell脚本获取结果

     1 private static String getMACAddress() throws Exception {
     2     String path = "/usr/local/webapp/macAddress.sh";
     3     Process process = Runtime.getRuntime().exec(path);
     4     process.waitFor();
     5 
     6     BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
     7     StringBuffer sb = new StringBuffer();
     8     String line;
     9     while ((line = br.readLine()) != null){
    10         sb.append(line);
    11     }
    12     String str = sb.toString();
    13     return str;
    14 }

    ===============================================

    测试:

     1 public static void main(String[] args) throws Exception {
     2 
     3     System.out.println("==========kaishi==========");
     4     String macAddress = getMACAddress();
     5     System.out.println("macAddress is: " + macAddress);
     6     
     7     String identifier = getIdentifier();
     8     System.out.println("identifier is: " + identifier);
     9     
    10     String uniquelyID = macAddress + "_" + identifier;
    11     System.out.println("uniquelyID is: " + uniquelyID);
    12     System.out.println("==========jieshu==========");
    13 
    14 }

    ===============================================

    输出:

    ==========kaishi==========
    macAddress is: **:**:**:**:**:**
    identifier is: *x********
    uniquelyID is: **:**:**:**:**:**_*x********
    ==========jieshu==========

    使用java代码执行Linux命令:

    1. 执行 "ifconfig" 命令

     1     private static String getMacAddress() 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         return str1;
    15     }

     2. 执行 "fdisk -l" 命令

     1     private static String getIdentifier() 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 
    16         return str1;
    17     }
  • 相关阅读:
    【leetcode】299. 猜数字游戏
    【leetcode】300. 最长递增子序列
    【leetcode】223. 矩形面积
    【leetcode】222. 完全二叉树的节点个数
    【leetcode】229. 求众数 II
    【leetcode】215. 数组中的第K个最大元素
    【leetcode】221. 最大正方形
    【leetcode】216. 组合总和 III
    【leetcode】213. 打家劫舍 II
    【leetcode】210. 课程表 II
  • 原文地址:https://www.cnblogs.com/yanwu0527/p/8984201.html
Copyright © 2020-2023  润新知