11 my @cmd = ('sudo', 'megactl', '-Hv', '2>&1');
14 print "WARNING: Exec failed!\n";
18 for my $line (@output) {
19 if ($line =~ /^(\w+)\s+/) {
21 my @line = split /\s+/, $line;
22 $devs->{$dev}->{'header'} = \@line;
27 sub check_controller {
29 my ($err, $warn, $ok) = undef;
30 $ok .= "$dev->{'header'}->[0]: ";
31 for my $stat (@{$dev->{'header'}}) {
32 if ($stat =~ /batt:(.*)/) {
34 $warn .= "$dev->{'header'}->[0]: " unless $warn;
35 $warn .= "Battery: $1 ";
39 $ok = "$dev->{'header'}->[0]: ok ";
40 return ($ok, $err, $warn);
45 my ($err, $warn, $ok) = undef;
46 if ($dev->{'header'}->[5] ne 'online') {
47 $err .= "$dev->{'header'}->[0]: $dev->{'header'}->[5]";
48 return ($ok, $err, $warn);
50 $ok = "$dev->{'header'}->[0]: ok ";
51 return ($ok, $err, $warn);
56 my ($err, $warn, $ok) = undef;
57 if ($dev->{'header'}->[5] ne 'online') {
58 $err .= "$dev->{'header'}->[0]: $dev->{'header'}->[5]";
59 return ($ok, $err, $warn);
61 for my $stat (@{$dev->{'header'}}) {
62 if ($stat =~ /(^errs|media|other):/) {
63 $warn .= "$dev->{'header'}->[0]: " unless $warn;
67 $ok = "$dev->{'header'}->[0]: ok ";
68 return ($ok, $err, $warn);
71 for my $dev (sort keys %$devs) {
72 if ($dev =~ /^\w\d$/) {
73 my ($ok, $err, $warn) = check_controller($devs->{$dev});
74 push @errs, $err if $err;
75 push @warn, $warn if $warn;
77 } elsif ($dev =~ /^\w\d\w\d$/) {
78 my ($ok, $err, $warn) = check_ld($devs->{$dev});
79 push @errs, $err if $err;
80 push @warn, $warn if $warn;
82 } elsif ($dev =~ /^\w+\d+\w+\d+\w+\d+/) {
83 my ($ok, $err, $warn) = check_pd($devs->{$dev});
84 push @errs, $err if $err;
85 push @warn, $warn if $warn;
102 push @ok, "All devices OK";