Un chtit script Perl qui me simplifie l'existence...


#!/usr/bin/perl
use strict;
use warnings;

my %device ;

my @liste_dg = `vxdisk list`;
foreach my $dg (@liste_dg) {
  next if $dg !~ m/cdsdisk/;
  my @F = split /\s+/, $dg;
  $device{$F[0]} = {    'disk'  => $F[2],
                        'group' => $F[3]
                   };
}

foreach my $device (sort keys %device) {
  local undef $/;
  my $data   = `vxdisk list $device`;
  $data =~ m/iosize:\s+min=(\d+)\s.+?public:.+?len=(\d+)\s/s;
  $device{$device}{'size'} = $1 * $2 / 1024**3 ;
}

printf "%-15s %-35s %-20s  %-5s\n", qw{DEVICE DISK GROUP SIZE};
print "-" x 79 . "\n";
foreach (sort keys %device) {
  printf "%-15s %-35s %-20s % 6.2f\n",
         $_,
         $device{$_}{'disk'},
         $device{$_}{'group'},
         $device{$_}{'size'};
}

Pour avoir un résultat du genre :


DEVICE          DISK                                GROUP                 SIZE
-------------------------------------------------------------------------------
c4t0d0s2        xxxxxxORA27_1_xxxxx_xxx_01          data_PA_dg            79.98
c4t0d1s2        xxxxxxORA27_2_xxxxx_xxx_01          appli_PA_dg            5.98
c4t0d2s2        xxxxxxORA27_3_xxxxx_xxx_01          data_PD_dg            79.98
c4t0d3s2        xxxxxxORA27_4_xxxxx_xxx_01          appli_PD_dg            5.98
c4t0d4s2        xxxxxxORA27_5_xxxxx_xxx_01          data_PL_dg            79.98
c4t0d5s2        xxxxxxORA27_6_xxxxx_xxx_01          appli_PL_dg            5.98
c4t0d6s2        xxxxxxORA27_7_xxxxx_xxx_01          svg_dg                 9.98
c4t0d7s2        xxxxxxORA27_8_xxxxx_xxx_01          data_SAS_PD_dg        14.98
c4t0d8s2        xxxxxxORA27_9_xxxxx_xxx_01          data_SAS_PA_dg         6.98
c4t0d9s2        xxxxxxORA27_10_xxxxx_xxx_01         data_SAS_PL_dg        14.98