regex. das eine Wort ja, das andere nicht ohne pipe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mclien
Beiträge: 2468
Registriert: 06.12.2005 10:38:46
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Baustelle

regex. das eine Wort ja, das andere nicht ohne pipe

Beitrag von mclien » 01.02.2012 14:40:29

aaaalso, was ich brauch ist folgendes:

ich mache ein ps und such dann nach einer regex, die folgendes können soll:
-alle prozesse die mit "postgres: " beginnen finden
- NICHT die mit "postgres: "beginnen und irgendwo das Wort "laber" enthalten.

Da ich das ganze inner halb von OMD (nagios mit zusätzen) benutze kann ich nicht mit pipes arbeiten, womit:
grep ^postgres|grep -v laber leider ausfällt.

mit diversen Versuchen "[^(laber)]" "[^l][^a][^b][^e][^r]" bin ic zwar in die Nähe gekommen, aber ebn nur knapp
wobei letzterer Versuch ja dann auch ?a??? findet.

Also: wer weiss es?

gruß
mclien

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: regex. das eine Wort ja, das andere nicht ohne pipe

Beitrag von Liffi » 01.02.2012 15:18:11

Vielleicht mit perl und backtracking. Wenn ich zuhaus bin, kann ich evtl. auch mal ein Beispiel geben :-).

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: regex. das eine Wort ja, das andere nicht ohne pipe

Beitrag von rendegast » 01.02.2012 15:24:53

Wird der Ausdruck von einem nagios-plugin an ps übergeben
(Im Sinne eines Webeingabeformulars)?

Oder wird hier 'ps' aufgerufen?
Dann könntest Du das ganze in ein Skript zBsp. "ps_my-postgres" auslagern und dieses statt 'ps ....' aufrufen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

mclien
Beiträge: 2468
Registriert: 06.12.2005 10:38:46
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Baustelle

Re: regex. das eine Wort ja, das andere nicht ohne pipe

Beitrag von mclien » 01.02.2012 15:42:40

ich benutzte ein plugin, das die ganze Verwaltung sehr vereinfacht (check_mk).
Hat den riesen Vorteil, daß man fast die gesammte config in einer einzigen conf Datei machen kann.
Und ein Teil von check_mk ist dass des ps-Kommando in der check integriert ist. (heisst der Agend auf dem überwachtem host gibt die Ergebnisse von ps zurück, gefilter nach user und/oder regex und kann warnen wenn eine definierte anzahl von prozessen auf die die Filter passen über/unterschritten wird)
Also ja, es kann "nur" das commando ps aufgerufen werden.
(Klar kann man auch externe Scripte aufrufen, dann gets wieder ganz einfach mit pipen)

Lt. einem Kollegen kann amn aber mit einem einzelnen ergex keine ganzen Worte "ausschliessen".
Dicht drann ist z.B.: postgres: \b[^l]:
das findet dann alles was mit postgres: [Wort ohne "l" am Anfang]

ansonsten muss ich halt doch ein externes script einbauen...

EDIT:
hier ist das Manual:
http://mathias-kettner.de/checkmk_check_ps.html

mclien
Beiträge: 2468
Registriert: 06.12.2005 10:38:46
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Baustelle

Re: regex. das eine Wort ja, das andere nicht ohne pipe

Beitrag von mclien » 02.02.2012 11:06:05

quasi gelöst. nicht mit negierung. Aber durch einen Tip habe ich festestellt, dass die prozesse, die ich finden will alle auf "process" enden und ich somit als regex "postgres.*process" benutzen kann, um alle gesuchen Prozesse (und nur die) zu finden.

Antworten