1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
package Ocsinventory::Agent::Backend::OS::Generic::Lspci::Controllers;
use strict;
sub check {
my $params = shift;
my $common = $params->{common};
$common->can_run("lspci")
}
sub run {
my $params = shift;
my $common = $params->{common};
my $driver;
my $name;
my $manufacturer;
my $pciid;
my $pcislot;
my $type;
my $lspci_version;
my $command = "lspci -vvv 2>/dev/null";
#We get the current lspci version
`lspci --version` =~ m/lspci\sversion\s(\d+.*)/ ;
$lspci_version=$1;
$lspci_version = $common->convertVersion($lspci_version,3);
if ($lspci_version >= 224) { #More informations since version 2.2.4
$command = "lspci -vvv -nn 2>/dev/null";
}
foreach(`$command`){
if (/^(\S+)\s+(\w+.*?):\s(.*)/) {
$pcislot = $1;
$name = $2;
$manufacturer = $3;
if ($manufacturer =~ s/ \((rev \S+)\)//) {
$type = $1;
}
$manufacturer =~ s/\ *$//; # clean up the end of the string
$manufacturer =~ s/\s+\(prog-if \d+ \[.*?\]\)$//; # clean up the end of the string
if ($manufacturer =~ s/ \[([A-z\d]+:[A-z\d]+)\]$//) {
$pciid = $1;
}
}
if ($pcislot && /^\s+Kernel driver in use: (\w+)/) {
$driver = $1;
}
if ($pcislot && /^$/) {
$common->addController({
'DRIVER' => $driver,
'NAME' => $name,
'MANUFACTURER' => $manufacturer,
'PCIID' => $pciid,
'PCISLOT' => $pcislot,
'TYPE' => $type,
});
$driver = $name = $pciid = $pcislot = $manufacturer = $type = undef;
}
}
}
1
|