dgr243 Geschrieben 1. August 2006 Geschrieben 1. August 2006 Moin, ich will einen MRTG füttern und benötige daher für folgendes Szenario einen Regex. 1. Es wird Ping von einer Cisco abgesetzt Rückmeldung sieht wie folgt aus: hostname#ping 193.0.0.193 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 193.0.0.193, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/8 ms Die fett markierten Zahlen will ich haben Für die Zahlen gilt: 1. Zahl 0 <= Zahl <= 100 2. und 3. Zahll: 0 <= Zahl <= 3000 Daaanke (ja ich bin für regex zu plöd ) Zitieren
glkn2 Geschrieben 1. August 2006 Geschrieben 1. August 2006 ($a, $b, $c) = m:Success rate is (\d+) percent .*? \d+/(\d+)/(\d+) ms:; Es gäbe noch etliche Möglichkeiten mehr. Schön zeilenweise reinschieben... oder entweder lf und falls vorhanden cr durch nichts ersetzen oder Modifizierer hinzufügen. Von letzterem kann ich nur abraten. Zitieren
dgr243 Geschrieben 1. August 2006 Autor Geschrieben 1. August 2006 super vielen dank .. wird morgen direkt in der firma getestet zeilenweise füttern sollte kein problem sein.. übergabe kommt von net::telnet insgesamt sollen damit fehleranalysen innerhalb von MPLS vpns analysiert werden können und sporadischer packet loss bzw. stark schwankende RTT's gemonitored werden. und da komm ich halt nur ran, wenn ich zuvor irgendwie in das MPLS VPN reinkomme.. so schön mpls vpns im vergleich zu ipsec sind, aber das monitoring wird dadurch nicht leichter ich melde mich dann morgen, wenn ichs getestet hab und auf probleme gestossen bin Zitieren
dgr243 Geschrieben 2. August 2006 Autor Geschrieben 2. August 2006 Hmm irgendwie hab ich noch 2 Probleme. Beim ersten stell ich mich nur zu blöd an.. ich hab die zeile "Success Rate is......." in $ergebnis vorliegen wie schieb ich die zeile denn nu an den ausdruck rüber :confused: irgendwie brauch ich mehr kaffee.. das zweite is, dass ich MRTG ja nur max 2 zahlen übergeben kann ich brauche also zwei regex .. einmal die rückmeldung zum packet loss ($a in obigem regex aber halt einzeln) und einmal die durchchnittliche und maximale pingzeit ($b und $c von oben) aber halt einzeln, damit ich 2 scripte hab. eins dass $a zurückliefert und eins das $b und $c zurückliefert.. *gähn* es ist zu früh am morgen help appreciated Zitieren
glkn2 Geschrieben 2. August 2006 Geschrieben 2. August 2006 Also die Regex funktioniert: chef@lx ~ $ echo "Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/8 ms" | perl -ne '($a, $b, $c) = m:Success rate is (\d+) percent .*? \d+/(\d+)/(\d+) ms:; print "\$a=$a, \$b=$b, \$c=$c\n";' $a=100, $b=7, $c=8 Du müsstest für Dein Problem folgendes tun: ($a, $b, $c) = ($ergebnis =~ m:Success rate is (\d+) percent .*? \d+/(\d+)/(\d+) ms:); Die Werte liegen dann in den drei Skalaren vor. Mir ist jetzt leider nicht ganz klar, weshalb Du das jeweils getrennt haben willst, aber auch das ist möglich: ($a) = m;Success rate is (\d+) percent; ($b, $c) = m;\d+/(\d+)/(\d+) ms; Zitieren
glkn2 Geschrieben 2. August 2006 Geschrieben 2. August 2006 Jetzt hat der da ein Smilie eingefügt. Es sollte dann an der Stelle natürlich ... ms [Doppelpunkt] [Klammer zu] [semikolon] lauten. Zitieren
dgr243 Geschrieben 3. August 2006 Autor Geschrieben 3. August 2006 Thx !! wird getestet, wenn ich von chef ma wieder grünes licht krieg ist ja nebenprojekt neben den normalen sachen... ich brauch dat ganze einzeln, weil ich dem mrtg das ganze ja übergeben tu. und ich will 2 getrennte grafiken (eine für die RTT's und eine für den Packetloss), weil das ganze ansonsten arg unübersichtlich wird... 2 getrennte grafiken krieg ich aber nur, wenn ich den mrtg 2 mal "piesacke" Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.