/usr/local/CPAN/Ocsinventory-Agent/Ocsinventory/Agent/Backend/OS/Generic/Dmidecode/Slots.pm
package Ocsinventory::Agent::Backend::OS::Generic::Dmidecode::Slots;
use strict;
sub run {
my $params = shift;
my $inventory = $params->{inventory};
my $dmidecode = `dmidecode`;
# some versions of dmidecode do not separate items with new lines
# so add a new line before each handle
$dmidecode =~ s/\nHandle/\n\nHandle/g;
my @dmidecode = split (/\n/, $dmidecode);
# add a new line at the end
push @dmidecode, "\n";
s/^\s+// for (@dmidecode);
my $flag;
my $description;
my $designation;
my $name;
my $status;
foreach (@dmidecode) {
if(/dmi type 9,/i) {
$flag=1;
} elsif ($flag && /^$/) {
$flag=0;
$inventory->addSlots({
DESCRIPTION => $description,
DESIGNATION => $designation,
NAME => $name,
STATUS => $status,
});
$description = $designation = $name = $status = undef;
} elsif ($flag) {
$description = $1 if /^type\s*:\s*(.+)/i;
$designation = $1 if /^id\s*:\s*(.+)/i;
$name = $1 if /^designation\s*:\s*(.+)/i;
$status = $1 if /^current usage\s*:\s*(.+)/i;
};
}
}
1;