source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/OS/Linux/Storages/Adaptec.pm @ 468

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

Copyt trusty code

File size: 2.3 KB
Line 
1package Ocsinventory::Agent::Backend::OS::Linux::Storages::Adaptec;
2use Ocsinventory::Agent::Backend::OS::Linux::Storages;
3
4# Tested on 2.6.* kernels
5#
6# Cards tested :
7#
8# Adaptec AAC-RAID
9
10use strict;
11
12my @devices = Ocsinventory::Agent::Backend::OS::Linux::Storages::getFromUdev();
13
14sub check {
15
16    if (can_run ('smartctl') ) { 
17      foreach my $hd (@devices) {
18        $hd->{MANUFACTURER} eq 'Adaptec'?return 1:1;
19      }
20    }
21  return 0;
22
23}
24
25sub run {
26
27  my $params = shift;
28  my $common = $params->{common};
29  my $logger = $params->{logger};
30
31  if (-r '/proc/scsi/scsi') {
32    foreach my $hd (@devices) {
33      open (PATH, '/proc/scsi/scsi');
34
35# Example output:
36#
37# Attached devices:
38# Host: scsi0 Channel: 00 Id: 00 Lun: 00
39#   Vendor: Adaptec  Model: raid10           Rev: V1.0
40#   Type:   Direct-Access                    ANSI  SCSI revision: 02
41# Host: scsi0 Channel: 01 Id: 00 Lun: 00
42#   Vendor: HITACHI  Model: HUS151436VL3800  Rev: S3C0
43#   Type:   Direct-Access                    ANSI  SCSI revision: 03
44# Host: scsi0 Channel: 01 Id: 01 Lun: 00
45#   Vendor: HITACHI  Model: HUS151436VL3800  Rev: S3C0
46#   Type:   Direct-Access                    ANSI  SCSI revision: 03
47
48      my ($host, $model, $firmware, $manufacturer, $size, $serialnumber);
49      my $count = -1;
50      while (<PATH>) {
51        ($host, $count) = (1, $count+1) if /^Host:\sscsi$hd->{SCSI_COID}.*/;
52        if ($host) {
53          if ((/.*Model:\s(\S+).*Rev:\s(\S+).*/) and ($1 !~ 'raid.*')) {
54            $model = $1;
55            $firmware = $2;
56            $manufacturer = Ocsinventory::Agent::Backend::OS::Linux::Storages::getManufacturer($model);
57            foreach (`smartctl -i /dev/sg$count`) {
58              $serialnumber = $1 if /^Serial Number:\s+(\S*).*/;
59            }
60            $logger->debug("Adaptec: $hd->{NAME}, $manufacturer, $model, SATA, disk, $hd->{DISKSIZE}, $serialnumber, $firmware");
61            $host = undef;
62
63            $common->addStorages({
64                NAME => $hd->{NAME},
65                MANUFACTURER => $manufacturer,
66                MODEL => $model,
67                DESCRIPTION => 'SATA',
68                TYPE => 'disk',
69                DISKSIZE => $size,
70                SERIALNUMBER => $serialnumber,
71                FIRMWARE => $firmware,
72                });
73          }
74        }
75      }
76      close (PATH);
77    }
78  }
79
80}
81
821;
Note: See TracBrowser for help on using the repository browser.