Skip to content

Instantly share code, notes, and snippets.

@ablakely
Created July 8, 2022 08:05
Show Gist options
  • Save ablakely/c27efcb0ff13189ee1236cbefbf481a3 to your computer and use it in GitHub Desktop.
Save ablakely/c27efcb0ff13189ee1236cbefbf481a3 to your computer and use it in GitHub Desktop.
perl system info script for Snak IRC client
#!/usr/bin/perl -w
use strict;
use warnings;
sub osascript {
my @tmp = map {("-e '", $_, "'")} split(/\n/, $_[0]);
my $prog = "@tmp";
return `osascript $prog`;
}
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();
my $sysstr = $sysinfo->{computerName}.": OS: ".$sysinfo->{software}." Hardware: ".$sysinfo->{hardware};
osascript <<END;
tell application "Snak"
type "$sysstr"
end tell
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment