File: Controllers.pm

package info (click to toggle)
ocsinventory-agent 2%3A2.10.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,424 kB
  • sloc: perl: 26,492; xml: 773; objc: 528; sh: 386; ansic: 333; makefile: 12
file content (66 lines) | stat: -rw-r--r-- 1,839 bytes parent folder | download | duplicates (3)
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