package com.zy.system.entity.license; 
 | 
  
 | 
import com.core.common.Cools; 
 | 
  
 | 
import java.io.BufferedReader; 
 | 
import java.io.InputStreamReader; 
 | 
import java.net.InetAddress; 
 | 
import java.util.List; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 用于获取客户Linux服务器的基本信息 
 | 
 */ 
 | 
public class LinuxServerInfos extends AbstractServerInfos { 
 | 
  
 | 
    @Override 
 | 
    protected List<String> getIpAddress() throws Exception { 
 | 
        List<String> result = null; 
 | 
  
 | 
        //获取所有网络接口 
 | 
        List<InetAddress> inetAddresses = getLocalAllInetAddress(); 
 | 
  
 | 
        if (inetAddresses != null && inetAddresses.size() > 0) { 
 | 
            result = inetAddresses.stream().map(InetAddress::getHostAddress).distinct().map(String::toLowerCase).collect(Collectors.toList()); 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    protected List<String> getMacAddress() throws Exception { 
 | 
        List<String> result = null; 
 | 
  
 | 
        //1. 获取所有网络接口 
 | 
        List<InetAddress> inetAddresses = getLocalAllInetAddress(); 
 | 
  
 | 
        if (inetAddresses != null && inetAddresses.size() > 0) { 
 | 
            //2. 获取所有网络接口的Mac地址 
 | 
            result = inetAddresses.stream().map(this::getMacByInetAddress).distinct().collect(Collectors.toList()); 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    protected String getCPUSerial() throws Exception { 
 | 
        //序列号 
 | 
        String serialNumber = ""; 
 | 
  
 | 
        //使用dmidecode命令获取CPU序列号 
 | 
        String[] shell = {"/bin/bash", "-c", "dmidecode -t processor | grep 'ID' | awk -F ':' '{print $2}' | head -n 1"}; 
 | 
        Process process = Runtime.getRuntime().exec(shell); 
 | 
        process.getOutputStream().close(); 
 | 
  
 | 
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
 | 
  
 | 
        if (null == reader.readLine()) { 
 | 
            return serialNumber; 
 | 
        } 
 | 
        String line = reader.readLine().trim(); 
 | 
        if (!Cools.isEmpty(line)) { 
 | 
            serialNumber = line; 
 | 
        } 
 | 
  
 | 
        reader.close(); 
 | 
        return serialNumber; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    protected String getMainBoardSerial() throws Exception { 
 | 
        //序列号 
 | 
        String serialNumber = ""; 
 | 
  
 | 
        //使用dmidecode命令获取主板序列号 
 | 
        String[] shell = {"/bin/bash", "-c", "dmidecode | grep 'Serial Number' | awk -F ':' '{print $2}' | head -n 1"}; 
 | 
        Process process = Runtime.getRuntime().exec(shell); 
 | 
        process.getOutputStream().close(); 
 | 
  
 | 
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
 | 
        if (null == reader.readLine()) { 
 | 
            return serialNumber; 
 | 
        } 
 | 
        String line = reader.readLine().trim(); 
 | 
        if (!Cools.isEmpty(line)) { 
 | 
            serialNumber = line; 
 | 
        } 
 | 
  
 | 
        reader.close(); 
 | 
        return serialNumber; 
 | 
    } 
 | 
} 
 |