部署在docker容器中的应用,如果需要根据主机唯一标识进行授权时,如果按MAC地址来生成,在主机重启后,MAC地址可能会变,获取CPUID有困难。在网上找到另一种方法,此方法适用于Linux和Docker应用容器内部:
/**
* 获取Docker内的系统UUID
* @return
*/
public static String getSystemUuid(boolean isReturnPrefix) {
String result = "";
Runtime rt = Runtime.getRuntime();
try {
Process proc = rt.exec("cat /sys/class/dmi/id/product_uuid"); //关键行
InputStreamReader isr = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
result+=line;
}
isr.close();
result=result.trim();
if(!"".equals(result)){
if(isReturnPrefix)
result="CPUID:"+result;
}
result = result.replace(" ", "");
return result;
} catch (IOException e) {
logger.error("获取linux/unix系統cpuId发生异常。原因:"+e);
return null;
}
}