Thread String einlesen und nachfolgendes Wort ausgeben (20 answers)
Opened by SCORRPiO at 2014-04-15 10:15

SCORRPiO
 2014-04-15 10:53
#174773 #174773
User since
2014-02-18
13 Artikel
BenutzerIn

user image
Die ausgabe war eine gekürzte
der Komplette Code sieht so aus:
more (17.5kb):

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use strict;
use warnings;
# Messages
# ********
my $message_ok = "OK";
my $message_warning = "WARNING";
my $message_critical = "CRITICAL";
my $message_unknown = "UNKNOWN"; 
# Exit Status
# ***********
my $exit_ok = "0";
my $exit_warning = "1";
my $exit_critical = "2";
my $exit_unknown = "3";
# other Variable
# ***********
my $status = 3;                 # Wenn kein Status dann 3 (UNKNOWN)
#~ my @werte=`/usr/sbin/mpt-status`;
my @werte = `cat test4`;        #test ausgabe
my $zeile="";                           #aktuelle Zeile fürs einlesen
my $ausgabe;                            #Zeile für die Ausgabe
# Programmierung
# ********
foreach $zeile (@werte){
        if($zeile =~ m/OPTIMAL/g){
                        exit "0";
                        }
        if($zeile =~ m/ONLINE/g){
                        exit "0";
                        }
        
        if($zeile =~ m/RESYNC_IN_PROGRESS/g){
                        $ausgabe=$zeile;
                        my $phy = $ausgabe =~ /phy\s(\w.+)/; 
                        my $state = $ausgabe =~ /state\s\s(\w.+)/;
                        my $flags = $ausgabe =~ /flags\s\s(\w.+)/;
                        printf "phy: $phy, state: $state, flags: $flags ....RESYNC\n";
                        exit "1";
                        }
        else{
         if($zeile =~ m/MISSING/g){
                        $ausgabe=$zeile;
                        
                        my $phy = $ausgabe =~ /phy\s(\w.+)/; 
                        my $state = $ausgabe =~ /state\s\s(\w.+)/;
                        my $flags = $ausgabe =~ /flags\s\s(\w.+)/;
                        printf "phy: $phy, state: $state, flags: $flags ....MISS\n";
                        exit "2";
                        }
                        
         else{
                        if($zeile =~ m/OUT_OF_SYNC/g){
                        $ausgabe=$zeile;
                        
                        my $phy = $ausgabe =~ /phy\s \s([\w.]+)/;
                        my $state = $ausgabe =~ /state\s \s([\w.]+)/;
                        my $flags = $ausgabe =~ /flags\s \s([\w.]+)/;

                        printf "phy: $phy, state: $state, flags: $flags ...OUT\n";
                        exit "2";
                        }
                        
        else{
         if($zeile =~ m/OFFLINE/g){
                        $ausgabe=$zeile;
                        
                        my $phy = $ausgabe =~ /phy\s \s([\w.]+)/;
                        my $state = $ausgabe =~ /state\s \s([\w.]+)/;
                        my $flags = $ausgabe =~ /flags\s \s([\w.]+)/;
                        printf "phy: $phy, state: $state, flags: $flags ....Offline\n";

                        exit "2";
                        }
                }}}

}

ein use strict; war enthalten
use warnings; war deaktiviert, hab es aktiviert und die Fehler (my $ausgabe in $ausgabe geändert) behoben.

Jedoch bekomme ich als ausgabe immer noch keine Ausgabe nur:
phy: , state: , flags:  ....RESYNC
Last edited: 2014-04-15 10:54:54 +0200 (CEST)
Linux User || Perl 5.14

View full thread String einlesen und nachfolgendes Wort ausgeben