0
点赞
收藏
分享

微信扫一扫

Java使用Bash获取Linux硬件序列号信息

外贸达人小峻先森 2022-02-18 阅读 92

需求:希望项目和服务器硬件绑定

所以获取服务器硬件序列号,做加密运算后得到验证字符串,现记录Java使用Bash获取Linux硬件序列号代码。

1.获取Linux硬件信息命令行

使用 dmidecode 命令获取服务器详细硬件信息,因为我们需要获取到硬件序列号信息,所以使用dmidecode | grep 'Serial Number' 过滤得到序列号信息,如下图所示。

2. 使用Java调用Bash命令,得到上图信息

创建 LinuxInfoCollect.java 文件,内部代码如下

/**
 * 执行Linux 命令
 * @date 2022年2月18日上午9:06:31
 * @param cmd 命令Str
 * @return
 */
private static String exec(String cmd) {
	try {
		String[] cmdA = { "/bin/sh", "-c", cmd };
		Process process = Runtime.getRuntime().exec(cmdA);
		LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream()));
		StringBuffer sb = new StringBuffer();
		String line;
		while ((line = br.readLine()) != null) {
			System.out.println(line);
			line = line.trim();
			sb.append(line).append("\n");
		}
		return sb.toString();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}

public static void main(String[] args) {
	String netsString = exec("dmidecode | grep 'Serial Number'");

	System.out.println("==========获得值=============");
	System.out.println(netsString);
}

在服务器上运行,得到下图结果: 

 已经得到硬件序列号信息。

3.格式化序列号信息

从图中可以看到,有部分序列号是空串或者是"Not Specified"字串,我们需要根据自己的需求,做字符串的处理即可。我的处理流程为,剔除空串以及"Not Specified"字串,然后使用Collections.sort(serialNumbers)默认排序规则,做序列号的排序,得到最终值。

举报

相关推荐

0 条评论