是否有任何方法可以借助ip地址在同一网络中获取硬件设备的序列号?
答案 0 :(得分:2)
您可以尝试这样的事情
InetAddress address = InetAddress.getByName("192.168.1.55");
NetworkInterface ni = NetworkInterface.getByInetAddress(address);
if (ni != null) {
byte[] mac = ni.getHardwareAddress();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(sb.toString());
}
答案 1 :(得分:1)
如果需要网络适配器的MAC地址,可以使用NetworkInterface类获取MAC
InetAddress address = InetAddress.getByName("192.168.0.1"); NetworkInterface ni = NetworkInterface.getByInetAddress(address); if (ni != null) { byte[] mac = ni.getHardwareAddress(); }
答案 2 :(得分:1)
使用Hyperic SIGAR API: Hyperic的系统信息收集器(SIGAR)是一个用于收集软件清单数据的跨平台API。 SIGAR包括对各种版本和体系结构的Linux,FreeBSD,Windows,Solaris,AIX,HP-UX和Mac OSX的支持。 SIGAR API的用户可以访问库存和监控数据,包括:
核心API在纯C中实现,目前为Java,Perl和C#实现了绑定。
有关下载和更多信息的详细信息API: Hyperic SIGAR API
使用VBS:
MotherBoard序列号:
String vbs =
"Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
+ "Set colItems = objWMIService.ExecQuery _ \n"
+ " (\"Select * from Win32_BaseBoard\") \n"
+ "For Each objItem in colItems \n"
+ " Wscript.Echo objItem.SerialNumber \n"
+ " exit for ' do the first cpu only! \n"
+ "Next \n";
硬盘序列号:
String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
+"Set colDrives = objFSO.Drives\n"
+"Set objDrive = colDrives.item(\"" + drive + "\")\n"
+"Wscript.Echo objDrive.SerialNumber"; // see note
示例演示: Get the hard disk serial number or Motherboard serial number。
答案 3 :(得分:0)
假设“序列号”在这种情况下是设备的MAC地址,在命令提示符下/ shell:
ping <ip>
arp -a
您将获得MAC&lt; - &gt;的列表IP映射。这适用于Windows,MacOS和Linux。
您可以通过Runtime.exec()
运行这些命令并解析输出,但请注意输出的格式因操作系统而异。