Sunday, May 19th 2013, 3:38am UTC+2

You are not logged in.

  • Login
  • Register

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

1

Sunday, March 7th 2010, 8:59pm

Mit Perl Funktionstasten senden

Hi zusammnen,
ich sitze gerade dran per Net::Telnet auf AVAYA Komponenten zuzugreifen.
Früher habe ich diese immer per SNMP abgefragt, aber irgendwie klappt die Befüllung der SNMP-Tables bei AVAYA nicht richtig.
Nun gibt es auch die Möglichkeit diese Komponenten per Telnet abzufragen.

Dazu wollte ich mir Net::Telnet zu nutze machen.

Ich kann mich auch connecten, die Emulation einstellen und auch den entsprechenden Befehl (display alarms) absenden.
Danach möchte die Komponente aber die "F3" Taste gesendet haben.
Und nun weiss ich gerade gar nicht weiter.
habe auch schon verschiendene Ansätze über Google gefunden, aber keine hat mir richtig geholfen.

Nun hoffe ich das einer von Euch eine Möglichkeit kennt, wie man so etwas realisieren kann.

Gruß
Sascha

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

2

Tuesday, March 9th 2010, 10:50am

Sooo....
Ich bin nun um einges weiter gekommen..
Ich nutze nun eine andere Emulation wo ich nicht "F3" sondern "ESC+E" senden muss. Und das habe ich hin bekommen.
Jetzt habe ich einen Text zurück bekommen

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ALARM REPORT

Port       Maintenance On   Alt      Alarm   Svc   Ack?  Date        Date
           Name        Brd? Name     Type    State 1 2   Alarmed     Resolved

S00001     DIG-IP-S    n    1121     WARNING OUT         02/17/16:01 00/00/00:00
S00003     DIG-IP-S    n    3810     WARNING OUT         02/17/16:01 00/00/00:00
S00018     DIG-IP-S    n    3811     WARNING OUT         02/17/16:01 00/00/00:00
S00043     DIG-IP-S    n    3812     WARNING OUT         02/17/16:01 00/00/00:00
S00059     DIG-IP-S    n    3800     WARNING OUT         02/17/16:01 00/00/00:00
S00060     DIG-IP-S    n    3801     WARNING OUT         02/17/16:01 00/00/00:00
S00061     DIG-IP-S    n    3802     WARNING OUT         02/17/16:01 00/00/00:00
S00062     DIG-IP-S    n    3803     WARNING OUT         02/17/16:01 00/00/00:00
S00064     DIG-IP-S    n    3805     WARNING OUT         02/17/16:01 00/00/00:00
S00065     DIG-IP-S    n    3806     WARNING OUT         02/17/16:01 00/00/00:00
S00066     DIG-IP-S    n    3807     WARNING OUT         02/17/16:01 00/00/00:00
S00067     DIG-IP-S    n    3808     WARNING OUT         02/17/16:01 00/00/00:00
S00068     DIG-IP-S    n    3809     WARNING OUT         02/17/16:01 00/00/00:00
S00070     DIG-IP-S    n    1001     WARNING OUT         02/17/16:01 00/00/00:00


Für mich sind aber nur die Zeilen

Source code

1
S00001     DIG-IP-S    n    1121     WARNING OUT         02/17/16:01 00/00/00:00

interessant... Nur ich versuche seit heute morgen nur diese Zeilen in einen Array zu schreiben und bekomme ich einfach nicht gebacken.
Hat vielleicht einer für mich einen Ansatz wie ich jede einzelne Zeile in einen Array geschrieben bekomme?

Gruß
Sascha

mess

Master

Posts: 2,164

Location: Esslingen

Number of monitoring servers:

Nagios Version:

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts:

Number of services:

OS:

Plugin Version:

NagVis Version:

NDO Version:

Perfparse Version:

Other Addons:

3

Tuesday, March 9th 2010, 11:04am

Hat vielleicht einer für mich einen Ansatz wie ich jede einzelne Zeile in einen Array geschrieben bekomme?


Ich bin mir jetzt nicht sicher, ob du jede Zeile in einem Element haben willst, aber diese Beispiel macht ein zweidimensionales Array, wo die einzelnen Felder getrennt werden:

Source code

1
2
3
4
5
6
7
8
9
use Data::Dumper;
my @array=();
my $c=0;
while (<>) {
        if (/^S\d+/) {
                push @{$array[$c++]}, (split(/\s+/));
        }
}
print Dumper(\@array);


Output:

Source code

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
$ perl /tmp/testarray.pl
S00066     DIG-IP-S    n    3807     WARNING OUT         02/17/16:01 00/00/00:00
S00067     DIG-IP-S    n    3808     WARNING OUT         02/17/16:01 00/00/00:00
S00068     DIG-IP-S    n    3809     WARNING OUT         02/17/16:01 00/00/00:00
S00070     DIG-IP-S    n    1001     WARNING OUT         02/17/16:01 00/00/00:00
$VAR1 = [
          [
            'S00066',
            'DIG-IP-S',
            'n',
            '3807',
            'WARNING',
            'OUT',
            '02/17/16:01',
            '00/00/00:00'
          ],
          [
            'S00067',
            'DIG-IP-S',
            'n',
            '3808',
            'WARNING',
            'OUT',
            '02/17/16:01',
            '00/00/00:00'
          ],
          [
            'S00068',
            'DIG-IP-S',
            'n',
            '3809',
            'WARNING',
            'OUT',
            '02/17/16:01',
            '00/00/00:00'
          ],
          [
            'S00070',
            'DIG-IP-S',
            'n',
            '1001',
            'WARNING',
            'OUT',
            '02/17/16:01',
            '00/00/00:00'
          ]
        ];


Zugreifen wuerdest du dann mit $array[$zeilennummer][$feldnummer]. Assoziativ ginge das natuerlich auch, aber das kommt auf deine Anforderungen an ;)

Gruss - Matthias
-> check_multi und check_generic
Problem solved? Dann einfach mal flattrn, das hilft dem Forum!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

4

Tuesday, March 9th 2010, 11:35am

Hallo Matthias...
Du hast mal wieder meine Gedanken gelesen.. :)
So wollte ich es gerne haben...

Ich verstehe nur gerade nicht wie ich die Daten in diese While-Schleife bekomme.
Die Ausgabe von meiner Abfrage steht zur Zeit in der Variable "$inputstring"...
Was muss ich denn ändern damit diese Whileschleife dort greift...

Und Danke das Du mich da ein bisschen unterstützt!

mess

Master

Posts: 2,164

Location: Esslingen

Number of monitoring servers:

Nagios Version:

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts:

Number of services:

OS:

Plugin Version:

NagVis Version:

NDO Version:

Perfparse Version:

Other Addons:

5

Tuesday, March 9th 2010, 12:10pm

Ich verstehe nur gerade nicht wie ich die Daten in diese While-Schleife bekomme.
Die Ausgabe von meiner Abfrage steht zur Zeit in der Variable "$inputstring"...
Was muss ich denn ändern damit diese Whileschleife dort greift...

Am besten waere es, wenn dein Input schon in einem Array kommen wuerde ;)

Was spricht dagegen, statt "$inputstring=..." "@inputstrings=..." zu definieren? Dann kannst du naemlich fuer die Schleife

Source code

1
 while (shift(@inputstrings)) {...
oder noch kuerzer

Source code

1
for (@inputstrings) {...

formulieren.

Gruss - Matthias
-> check_multi und check_generic
Problem solved? Dann einfach mal flattrn, das hilft dem Forum!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

6

Tuesday, March 9th 2010, 12:21pm

Ok.... Das habe ich jetzt verstanden und nun habe ich es so wie Du es oben aufgelistet hast.
Alles schön im Array...

Danke Dir!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

7

Tuesday, March 9th 2010, 1:58pm

Hi Matthias...
Ich habe leider noch ein weiteres Problem, was mir eben erst beim schreiben ins Logfile aufgefallen ist.
Durch den Connect und Sammeln der Daten über Net::Telnet werden in der Ausgabe irgendwelche Escape-Sequenzen reingepackt, die natürlich den Array nicht richtig aufbauen lassen.

Es finden dich immer Zeichen wie

Source code

1
^[[9;0H

zwischen den einzelnen Werten.
Diese Zeichen haben aber ein Muster und ich könnte die erst einmal durch einen TAB oder Leerzeichen ersetzen lassen bevor ich es in die Funktion für den Array jage...
Das Muster sieht wie folgt aus

Source code

1
^[[ZAHL;ZAHLH


Nun habe ich es hiermit versucht

Source code

1
$inputstring =~ s/\[\d+;\d+H//g; 

Das klappt auch...Nur wenn ich das letzte ^[ versuche zu erwischen, bekomme ich entweder Fehlermeldungen oder der RegExp passt nicht.
Was muss ich denn in den RegExp packen damit das alles verschwindet?

Edit:
Das erste

Source code

1
^[
scheint ein Escape zu sein!

This post has been edited 1 times, last edit by "TheCry" (Mar 9th 2010, 2:10pm)


mess

Master

Posts: 2,164

Location: Esslingen

Number of monitoring servers:

Nagios Version:

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts:

Number of services:

OS:

Plugin Version:

NagVis Version:

NDO Version:

Perfparse Version:

Other Addons:

8

Tuesday, March 9th 2010, 2:34pm

Hmm.. schmeiss doch alle Zeichen raus, die nicht ASCII sind:

Source code

1
$inputstring =~ s/[^[:ascii:]]+//g;

Hab ich auf die Schnelle jetzt nicht testen koennen, aber so funzt das prinzipiell mit den Posix-Character-Klassen in Perl.;)

Gruss - Matthias
-> check_multi und check_generic
Problem solved? Dann einfach mal flattrn, das hilft dem Forum!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

9

Tuesday, March 9th 2010, 3:03pm

Das muss ich mir auf einer Debian Maschine ansehen.
Auf Ubuntu 8.04 habe ich noch kein Perl 5.10 drauf und laute MCPAN ist POSIX ein Teil davon...

Ich habe es jetzt etwas aufwendiger gemacht, aber jetzt ist alles sauber im ARRAY. Nur die erste Feldnummer bleibt immer leer...

Source code

1
2
3
4
5
$inputstring =~ s/\e\[\d+;\d+H/XXX/g; 
$inputstring =~ s/XXX(\d+)XXX/$1/g;
$inputstring =~ s/(\d+)XXX\//$1\//g;
$inputstring =~ s/(\d+)XXX:(\b[0-9]{1,2})/$1:$2 /g;
$inputstring =~ s/XXX/ /g;

mess

Master

Posts: 2,164

Location: Esslingen

Number of monitoring servers:

Nagios Version:

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts:

Number of services:

OS:

Plugin Version:

NagVis Version:

NDO Version:

Perfparse Version:

Other Addons:

10

Tuesday, March 9th 2010, 4:45pm

Auf Ubuntu 8.04 habe ich noch kein Perl 5.10 drauf und laute MCPAN ist POSIX ein Teil davon...

Die POSIX-Klassen gehen schon ziemlich lang - ich habs gerade mal auf einem Perl 5.6/Sol8 probiert, und es funzt. Mach es dir also nicht komplizierter als noetig ;)

Gruss - Matthias
-> check_multi und check_generic
Problem solved? Dann einfach mal flattrn, das hilft dem Forum!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

11

Tuesday, March 9th 2010, 5:15pm

Mhhhh....
Es hat erst nicht funktioniert. Dann habe ich gedacht ich muss use POSIX oben ins Script machen.
Dann bekam ich die Fehlermeldung das die Sache in Perl fehlen würde.
Also habe ich über MCPAN versucht dieses POSIX zu installieren...
Sonst wäre ich ja nicht auf so eine Aussage gekommen.

Ich werde das noch mal testen!

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

12

Wednesday, March 10th 2010, 8:03am

Morgen Matthias...
Wie nutze ich denn diesen ARRAY jetzt...
Ich bekomme das wieder nicht hin...
Mit foreach, while oder wie sonst? Jedes mal bleibe ich an so einem blöden Array hängen...
Mir geht es darum das ich Die Werte

Source code

1
2
3
4
5
6
7
8
9
10
[
            'S00001',
            'DIG-IP-S',
            'n',
            '1121',
            'WARNING',
            'OUT',
            '02/17/16:01',
            '00/00/00:00'
          ],

"DIG-IP-S" und "WARNING" mit den Eingaben vergleichen kann, So da auch der richtige ALarm ausgegeben wird!

pitchfork

Administrator

Posts: 18,436

Location: Kassel

Occupation: Sysadmin SAP / Linux / AIX

Number of monitoring servers: 2

Hobbies: Motorrad fahren, wenns die Zeit erlaubt :-)

Nagios Version: 3.2.3 ( OMD )

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts: 360

Number of services: 6700

OS: Debian 6.0

Plugin Version: 1.4.x

Other Addons: SNMPTT, NagTrap, check_mk, PNP-0.6.x. Thruk

13

Wednesday, March 10th 2010, 9:55am

$array[0] für S00001
$array[1] für DIG-IP-S

$array habe ich nur mal angenommen.
+++ PNP Developer +++ PNP 0.6.21 ist online ! +++
Hilfreiche Infos gefunden? Dann schnell ein paar Cent flattrn
OMD - Open Monitoring Distribution

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

14

Wednesday, March 10th 2010, 12:32pm

Danke Jörg...
Ich habe das jetzt in eine for Schleife reingepackt...
Damit klappt es bestens...


Eine Frage hätte ich aber noch

Quoted

Zugreifen wuerdest du dann mit $array[$zeilennummer][$feldnummer]. Assoziativ ginge das natuerlich auch, aber das kommt auf deine Anforderungen an

Wie müsste ich das

Source code

1
push @{$ALARMROWS[$c++]}, (split(/\s+/,$ALARMROW));

ändern dmit es ein assoziatives Array wird.
Mir geht es darum das ich die Werte gezielt ansprechen kann...
Z.B: $ALARMROWS{port} oder $ALARMROWS{date}

TheCry

Professional

Posts: 1,055

Birthday: Sep 29th 1970 (42)

Gender: male

Location: Koblenz

Occupation: Sys-Admin

Number of monitoring servers: 7

Nagios Version: 3.2.3

Distributed monitoring: Ja

Redundant monitoring: Ja

Number of hosts: ~1100

Number of services: ~10000

OS: Debian Lenny, Ubuntu 8.04 LTS

Plugin Version: 1.4.13

NagVis Version: 1.7.6

NDO Version: 1.5

Other Addons: PNP (V. 0.6.21), Multicheck (V 0.26), mod_gearman (V 1.4.2), DokuWiki, Trap2Mod_Gearman (V 1.5)

15

Thursday, March 11th 2010, 10:06am

Ich brauche doch noch einmal Hilfe....
Ich muss umbedingt erfahren wieviele Elemente in diesem ARRAY sind.
Also nicht in dem ganzen ARRAY sondern nur in

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 $VAR1 = [
          [
            '',
            '121',
            'MED-GTWY',
            'n',
            'MINOR',
            'n',
            '03/11/08:08',
            '00/00/00:00'
          ],
         [
            '',
            '121',
            'MED-GTWY',
            'n',
            'MINOR',
            'n',
            '03/11/08:08',
            '00/00/00:00'
          ],
]


Ein

Source code

1
print scalar(@ARRAY);

würde mir ja von dem kompletten ARRAY die Elemente ausgeben.
Mich würde aber nur der Teil

Source code

1
$ARRAY[0]

interessieren... Ich habe mal alles mögliche versucht...
Aber meistens heisst es

Source code

1
ARRAY(0xbe9e80)

Similar threads