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

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

Copyt trusty code

File size: 4.9 KB
Line 
1package Ocsinventory::Agent::Backend::OS::AIX::Storages;
2use strict;
3#use warning;
4
5sub check {
6        `which lsdev 2>&1`;
7        return if($? >> 8)!=0;
8        `which lsattr 2>&1`;
9        ($? >> 8)?0:1}
10
11sub run {
12  my $params = shift;
13  my $common = $params->{common};
14
15  my(@disques, $device, $model, $capacity, $description, $manufacturer, $n, $i, $flag, @rep, @scsi, @values, @lsattr, $FRU, $status);
16 
17  #lsvpd
18  my @lsvpd = `lsvpd`; 
19  s/^\*// for (@lsvpd);
20 
21  #SCSI disks
22  $n=0;
23  @scsi=`lsdev -Cc disk -s scsi -F 'name:description'`;
24  for(@scsi){
25        chomp $scsi[$n];
26        /^(.+):(.+)/;
27        $device=$1;
28        $description=$2;
29    @lsattr=`lsattr -EOl $device -a 'size_in_mb'`;
30        for (@lsattr){
31          if (! /^#/ ){
32            $capacity= $_;
33            chomp($capacity);$capacity =~ s/(\s+)$//;
34          }
35        }
36        for (@lsvpd){
37          if(/^AX $device/){$flag=1}
38          if ((/^MF (.+)/) && $flag){$manufacturer=$1;chomp($manufacturer);$manufacturer =~ s/(\s+)$//;}
39          if ((/^TM (.+)/) && $flag){$model=$1;chomp($model);$model =~ s/(\s+)$//;}
40          if ((/^FN (.+)/) && $flag){$FRU=$1;chomp($FRU);$FRU =~ s/(\s+)$//;$manufacturer .= ",FRU number :".$FRU}
41          if ((/^FC .+/) && $flag) {$flag=0;last}
42        }
43        $common->addStorages({
44          NAME => $device,
45          MANUFACTURER => $manufacturer,
46          MODEL => $model,
47          DESCRIPTION => $description,
48          TYPE => 'disk',
49          DISKSIZE => $capacity
50    });
51        $n++;
52  }
53#Virtual disks
54  @scsi= ();
55  @lsattr= ();
56  $n=0;
57  @scsi=`lsdev -Cc disk -s vscsi -F 'name:description'`;
58  for(@scsi){
59        chomp $scsi[$n];
60        /^(.+):(.+)/;
61        $device=$1;
62        $description=$2;
63        @lsattr=`lspv  $device 2>&1`;
64        for (@lsattr){
65                if ( ! ( /^0516-320.*/ ) )
66                {
67                        if (/TOTAL PPs:/ ) {
68       
69                                ($capacity,$model) = split(/\(/, $_);
70                                ($capacity,$model) = split(/ /,$model);
71                        }
72                }
73                else
74                {
75                        $capacity=0;
76                }
77        }
78        $common->addStorages({
79          MANUFACTURER => "VIO Disk",
80          MODEL => "Virtual Disk",
81          DESCRIPTION => $description,
82          TYPE => 'disk',
83          NAME => $device,
84          DISKSIZE => $capacity
85    });
86        $n++;
87  }
88
89
90
91  #CDROM
92  @scsi= ();
93  @lsattr= ();
94  @scsi=`lsdev -Cc cdrom -s scsi -F 'name:description:status'`;
95  $i=0;
96  for(@scsi){
97    chomp $scsi[$i];
98    /^(.+):(.+):(.+)/;
99    $device=$1;
100    $status=$3;
101    $description=$2;
102    $capacity="";
103    if (($status =~ /Available/)){
104      @lsattr=`lsattr -EOl $device -a 'size_in_mb'`;
105      for (@lsattr){
106        if (! /^#/ ){
107          $capacity= $_;
108          chomp($capacity);$capacity =~ s/(\s+)$//;
109        }
110      }
111      $description = $scsi[$n];
112      for (@lsvpd){
113                if(/^AX $device/){$flag=1}
114                if ((/^MF (.+)/) && $flag){$manufacturer=$1;chomp($manufacturer);$manufacturer =~ s/(\s+)$//;}
115                if ((/^TM (.+)/) && $flag){$model=$1;chomp($model);$model =~ s/(\s+)$//;}
116                if ((/^FN (.+)/) && $flag){$FRU=$1;chomp($FRU);$FRU =~ s/(\s+)$//;$manufacturer .= ",FRU number :".$FRU}
117                if ((/^FC .+/) && $flag) {$flag=0;last}
118      }
119      $common->addStorages({
120            NAME => $device,
121            MANUFACTURER => $manufacturer,
122            MODEL => $model,
123            DESCRIPTION => $description,
124            TYPE => 'cd',
125            DISKSIZE => $capacity
126      });
127      $n++;
128    }
129    $i++;
130  }
131
132  #TAPE
133  @scsi= ();
134  @lsattr= ();
135  @scsi=`lsdev -Cc tape -s scsi -F 'name:description:status'`;
136  $i=0;
137  for(@scsi){
138    chomp $scsi[$i];
139        /^(.+):(.+):(.+)/;
140        $device=$1;
141        $status=$3;
142        $description=$2;
143        $capacity="";
144        if (($status =~ /Available/)){
145      @lsattr=`lsattr -EOl $device -a 'size_in_mb'`;
146          for (@lsattr){
147        if (! /^#/ ){
148          $capacity= $_;
149          chomp($capacity);$capacity =~ s/(\s+)$//;
150        }
151      }
152      for (@lsvpd){
153            if(/^AX $device/){$flag=1}
154                if ((/^MF (.+)/) && $flag){$manufacturer=$1;chomp($manufacturer);$manufacturer =~ s/(\s+)$//;}
155                if ((/^TM (.+)/) && $flag){$model=$1;chomp($model);$model =~ s/(\s+)$//;}
156                if ((/^FN (.+)/) && $flag){$FRU=$1;chomp($FRU);$FRU =~ s/(\s+)$//;$manufacturer .= ",FRU number :".$FRU}
157                if ((/^FC .+/) && $flag) {$flag=0;last}
158          }
159          $common->addStorages({
160            NAME => $device,
161            MANUFACTURER => $manufacturer,
162            MODEL => $model,
163            DESCRIPTION => $description,
164            TYPE => 'tape',
165            DISKSIZE => $capacity
166      });
167      $n++;
168    }
169    $i++;
170  }
171
172  #Disquette
173  @scsi= ();
174  @lsattr= ();
175  @scsi=`lsdev -Cc diskette -F 'name:description:status'`;
176  $i=0;
177  for(@scsi){
178    chomp $scsi[$i];
179    /^(.+):(.+):(.+)/;
180    $device=$1;
181    $status=$3;
182    $description=$2;
183    $capacity="";
184    if (($status =~ /Available/)){
185      @lsattr=`lsattr -EOl $device -a 'fdtype'`;
186      for (@lsattr){
187        if (! /^#/ ){
188          $capacity= $_;
189          chomp($capacity);$capacity =~ s/(\s+)$//;
190        }
191      }
192      #On le force en retour taille disquette non affichable
193      $capacity ="";
194      $common->addStorages({
195            NAME => $device,
196            MANUFACTURER => 'N/A',
197            MODEL => 'N/A',
198            DESCRIPTION => $description,
199            TYPE => 'floppy',
200            DISKSIZE => ''
201      });
202          $n++;
203    }
204    $i++;
205  }
206}
207
2081;
Note: See TracBrowser for help on using the repository browser.