source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/OS/MacOS/Mem.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 1.7 KB
Line 
1package Ocsinventory::Agent::Backend::OS::MacOS::Mem;
2use strict;
3
4sub check {
5    return(undef) unless -r '/usr/sbin/system_profiler'; # check perms
6    return (undef) unless can_load("Mac::SysProfile");
7    return 1;
8}
9
10sub run {
11    my $params = shift;
12    my $common = $params->{common};
13
14    my $PhysicalMemory;
15
16    # create the profile object and return undef unless we get something back
17    my $profile = Mac::SysProfile->new();
18    my $data = $profile->gettype('SPMemoryDataType');
19    return(undef) unless(ref($data) eq 'ARRAY');
20
21    # Workaround for MacOSX 10.5.7
22    #if ($h->{'Memory Slots'}) {
23    #  $h = $h->{'Memory Slots'};
24    #}
25
26
27    foreach my $memory (@$data){
28        next unless $memory->{'_name'} =~ /^BANK|SODIMM|DIMM/;
29        # tare out the slot number
30        my $slot = $memory->{'_name'};
31        # memory in 10.5
32        if($slot =~ /^BANK (\d)\/DIMM\d/){
33            $slot = $1;
34        }
35        # 10.4
36        if($slot =~ /^SODIMM(\d)\/.*$/){
37                $slot = $1;
38        }
39        # 10.4 PPC
40        if($slot =~ /^DIMM(\d)\/.*$/){
41                $slot = $1;
42        }
43
44        # 10.7
45        if ($slot =~ /^DIMM (\d)/) {
46                $slot = $1;
47        }
48
49        my $size = $memory->{'dimm_size'};
50
51        # if system_profiler lables the size in gigs, we need to trim it down to megs so it's displayed properly
52        if($size =~ /GB$/){
53                $size =~ s/GB$//;
54                $size *= 1024;
55        }
56        $common->addMemory({
57            'CAPACITY'      => $size,
58            'SPEED'         => $memory->{'dimm_speed'},
59            'TYPE'          => $memory->{'dimm_type'},
60            'SERIALNUMBER'  => $memory->{'dimm_serial_number'},
61            'DESCRIPTION'   => $memory->{'dimm_part_number'},
62            'NUMSLOTS'      => $slot,
63            'CAPTION'       => 'Status: '.$memory->{'dimm_status'},
64        });
65    }
66}
671;
Note: See TracBrowser for help on using the repository browser.