获取OS X系统信息

最近因为工作需要,需要获取比较详细的Macintosh的系统信息。几番查找,找到一个比较行之有效的方法,记录一下。

实际上就是实用系统自带的Tool:system_profiler

获取用法

$ system_profiler -usage 

获取可以查询的Data Types

$ system_profiler -listDataTypes

按照需要获取的信息,依次添加 Data Type就可以获得相关的信息。
比如要获得Hardware Overview 和 System Software Overview:

$ system_profiler SPSoftwareDataType SPHardwareDataType

就会返回相关的信息了。

在代码中,可以直接使用 NSTask 来启动这个命令,可以重定向标准输出获取最终的输出结果:

NSTask *task = [[[NSTask alloc] init] autorelease];
[task setLaunchPath:@"/usr/sbin/system_profiler"];
[task setArguments:@[@"SPSoftwareDataType", @"SPHardwareDataType"]];
NSPipe *outputPipe = [NSPipe pipe];
[task setStandardOutput:outputPipe];
[task launch];
[task waitUntilExit];
[task release];

NSFileHandle * read = [outputPipe fileHandleForReading];
NSData * dataRead = [read readDataToEndOfFile];
NSString * stringRead = [[[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding] autorelease];
NSLog(@"output: %@", stringRead);

如果感觉单纯的字符串不好处理,可以加 -xml 来输出成 xml的格式。

Update 2015-11-26:
NSTask 的命令需要全路径,否则会提示system_profiler找不到,用

$ whereis system_profiler

找到 system_profiler的路径,就可以正常运行了

你可能感兴趣的:(获取OS X系统信息)