Thread String einlesen und nachfolgendes Wort ausgeben
(20 answers)
Opened by SCORRPiO at 2014-04-15 10:15
Danke klappt soweit ganz gut.
Noch eine Frage hätte ich da: Die Input Datei enthält 3 Zeilen Code: (dl
)
1 ioc0 vol_id 0 type IM, 2 phy, 135 GB, state DEGRADED, flags ENABLED RESYNC_IN_PROGRESS Mein Programm liest jedoch nur die 1. Zeile ein und gibt die aus und beendet sich, was müsste ich da noch ändern? Das Problem ist dass das Programm auch mehrere Zeilen haben kann (oder aber nur 3 Aktueller Programm Code: Code (perl): (dl
)
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 #!/usr/bin/perl ################################ # Raid status check for nagios # ################################ use strict; use warnings; my @Zeilen = (""); my $status = 3; # Wenn kein Status dann 3 (UNKNOWN) open(DATEN, "<test4") or die "Datei nicht gefunden\n"; foreach ( my $zeile = <DATEN>) { if($zeile =~ m/OPTIMAL/g){ exit "0"; } if($zeile =~ m/ONLINE/g){ my ($phy) = $zeile =~ /phy\s(\w+)/; my ($state) = $zeile =~ /state\s(\w+)/; my ($flags) = $zeile =~ /flags\s(\w+)/; printf "phy: $phy, state: $state, flags: $flags\n"; } elsif($zeile =~ m/RESYNC_IN_PROGRESS/g){ my ($phy) = $zeile =~ / \b phy \s+ (\w+) /x; my ($state) = $zeile =~ / \b state \s+ (\w+) /x; my ($flags) = $zeile =~ / \b flags \s+ (\w+) /x; printf "state: $state, flags: $flags\n"; } elsif($zeile =~ m/MISSING/g){ my ($phy) = $zeile =~ / \b phy \s+ (\w+) /x; my ($state) = $zeile =~ / \b state \s+ (\w+) /x; my ($flags) = $zeile =~ / \b flags \s+ (\w+) /x; printf "phy: $phy, state: $state, flags: $flags\n"; } elsif($zeile =~ m/OUT_OF_SYNC/g){ my ($phy) = $zeile =~ / \b phy \s+ (\w+) /x; my ($state) = $zeile =~ / \b state \s+ (\w+) /x; my ($flags) = $zeile =~ / \b flags \s+ (\w+) /x; printf "phy: $phy, state: $state, flags: $flags\n"; } elsif($zeile =~ m/OFFLINE/g){ my ($phy) = $zeile =~ / \b phy \s+ (\w+) /x; my ($state) = $zeile =~ / \b state \s+ (\w+) /x; my ($flags) = $zeile =~ / \b flags \s+ (\w+) /x; printf "phy: $phy, state: $state, flags: $flags\n"; } else { printf "UNKNOWN"; } } close(DATEN); Last edited: 2014-04-15 12:32:42 +0200 (CEST) Linux User || Perl 5.14
|