我正在尝试打印我的mac电脑的编辑:苹果电脑的序列号在java程序中。我熟悉Unix命令。
ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'它在终端中完成这项任务。
当我尝试的时候
String command = "ioreg -l | awk '/IOPlatformSerialNumber/ { print $4; }'"
Runtime terminal = Runtime.getRuntime();
String input = new BufferedReader(
new InputStreamReader(
terminal.exec(commands).getInputStream())).readLine();
System.out.println(new BufferedReader(
new InputStreamReader(
terminal.exec(command, args).getInputStream())).readLine());我的序列号没有打印出来。相反,它会打印:
<+-o Root class IORegistryEntry, id 0x100000100, retain 10> 我认为问题在于terminal.exec()并不打算接受整个命令字符串。java中有没有类似于python的Popen(command, stdout=PIPE, shell=True)中的参数shell = True的东西,可以让我传递整个命令字符串?
发布于 2011-04-21 14:38:58
要通过Java获取MAC地址,可以使用java.net.NetworkInterface
NetworkInterface.getByName("xxx").getHardwareAddress()如果您不知道网络接口的名称(我假设它在linux上是'eth0‘),您甚至可以使用NetworkInterface.getNetworkInterfaces()遍历所有网络接口。
https://stackoverflow.com/questions/5740390
复制相似问题