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.

Revisions

  1. ablakely created this gist Jul 8, 2022.
    74 changes: 74 additions & 0 deletions snak-sysinfo.pl
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,74 @@
    #!/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