Skip to content

Instantly share code, notes, and snippets.

@ablakely
Last active February 17, 2020 04:47
Show Gist options
  • Save ablakely/4328790d106ae448885fe8949f5f4301 to your computer and use it in GitHub Desktop.
Save ablakely/4328790d106ae448885fe8949f5f4301 to your computer and use it in GitHub Desktop.
Mac Sysinfo Perl Script
#!/usr/bin/perl -w
#
# mac-sysinfo.pl: system_profiler parser script - written for IRC bot brag script
#
# Tested hardware/software
# iMac G4 - OS X 10.4.11
# Mac Pro(1,1) - OS X 10.11.6
#
# Written by Aaron Blakely <aaron@ephasic.org>
use strict;
use warnings;
sub getMacInfo {
my @hardinfo = `system_profiler SPHardwareDataType SPSoftwareDataType`;
my %ret;
foreach my $line (@hardinfo) {
chomp $line;
if ($line =~ /^\s+(Machine|Model) Name\: (.*)$/) {
$ret{machineName} = $2;
}
elsif ($line =~ /^\s+(Machine Model|Model Identifier)\: (.*)$/) {
$ret{machineModel} = $2;
}
elsif ($line =~ /^\s+(CPU|Processor) Speed\: (.*)$/) {
$ret{cpuSpeed} = $2;
}
elsif ($line =~ /^\s+Total Number of Cores\: (.*)$/) {
$ret{numOfCores} = $1;
}
elsif ($line =~ /^\s+(CPU Type|Processor Name)\: (.*)$/) {
$ret{cpuType} = $2;
}
elsif ($line =~ /^\s+(Number Of CPUs|Number of Processors)\: (.*)$/) {
$ret{numOfCPUs} = $2;
}
elsif ($line =~ /^\s+Memory\: (.*)$/) {
$ret{memory} = $1;
}
elsif ($line =~ /^\s+System Version\: (.*)$/) {
$ret{osVersion} = $1;
}
elsif ($line =~ /^\s+Kernel Version\: (.*)$/) {
$ret{kernelVersion} = $1;
}
elsif ($line =~ /^\s+Computer Name\: (.*)$/) {
$ret{computerName} = $1;
}
}
$ret{software} = $ret{osVersion}." (Kernel: ".$ret{kernelVersion}.")";
$ret{hardware} = $ret{machineName}." (".$ret{machineModel}.")";
$ret{hardware} .= " CPU (".$ret{numOfCPUs}." installed";
if ($ret{numOfCores}) {
$ret{hardware} .= ", ".$ret{numOfCores}." cores";
}
$ret{hardware} .= "): ".$ret{cpuType}." @ ".$ret{cpuSpeed};
$ret{hardware} .= " RAM: ".$ret{memory};
return \%ret;
}
my $sysinfo = getMacInfo();
print $sysinfo->{computerName}.": OS: ".$sysinfo->{software}." Hardware: ".$sysinfo->{hardware}."\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment