栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

需求:希望项目和服务器硬件绑定,自购硬件服务器,非云上虚拟服务器。

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

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

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

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

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

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)默认排序规则,做序列号的排序,得到最终值。

[/BCC02L3/CNFCW001BP00C3/, 17E30442, BCC02L3, BCC02L3]

 4.不同类型服务器的情况

经测试

实体服务器上运行正常,可以得到硬件序列号;

在阿里云ECS上运行,仅能得到一个字符串,为 System Information 下序列号,其他硬件信息均无法得到。

在移动云ECS上运行,无法得到任何序列号。

 

如果有其他服务器测试结果,在评论区指出。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号