Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

25.11.2007, 20:21

Aktuelle Einträge

Hallo,

mit cronjob lasse ich mein Shellskript jeden Tag z.B. um 10 Uhr starten.
Im Skript versuche ich mit einem grep-kombinations-befehl alle aktuellen Einträge einer Logdatei ausfiltern. D.h. alle Einträge von 10 Uhr des letzten tages bis das Skript durch den Cronjob gestartet wird, also bis 10 Uhr heute.
Ich speichere das gestern-Datum1(date -d"1 day ago" sowie das heute-Datum2 in Variablen. dann mit grep im Bereich [Datum1-Datum2] selektiere ich die Einträge. Es funkz leider nicht. Bitte irgendeine Idee, wie ich die Einträge der letzten 24 Std. selektieren kann?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

25.11.2007, 21:27

RE: Aktuelle Einträge

was bedeutet "funkz nicht"?
bischen genauer wäre hilfreich. poste das script.

hast du für die externen shellkommandos die kompletten pfade eingetragen? cronjobs werden in einer nicht-interaktiven shell ausgeführt, da sieht das environment anders aus.
siehe man crond
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

3

26.11.2007, 12:48

RE: Aktuelle Einträge

funkz nicht = funktioniert nicht
das mit dem cronjob habe ich noch nicht. Erstmal will ich mein skript zum laufen bringen. So sieht das Skript aus:

#!/bin/ksh


########### Deklaration von Variablen

OracleFile=~/test/oracle.txt #path of outputfile
#
OraLogPath=/opt/oracle/product/10g/network/log/listener.log #name & path of the Logfile
#
# mailadressen der Empfänger
mail1=mustermail1@web.de
mail2=mustermail2@t-mobile.de
mail3=mustermail3@gmx.net
#
#Die Suchmuster
datum1= `date -d"1 days ago" +'%d-%m-%y %H:%M:%S'`
datum2= `date +'%d-%m-%y %H:%M:%S'`
content1=`grep "^[${datum1}-${datum2}]" | grep -E '(Error|WARNING)'`
content2=`grep "listening" listener.log | grep "no ports$" listener.log`

##########################################################################

# redirection of searched datas into outputfile
function readLog() {

$1
$2
$3

echo > $2
echo >> $3
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $3
echo " Oracle Logfile " >> $3
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $3
echo -e "$1" >> $3
echo -e "$1" >> $3
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $3
echo -e "$2" >> $2
echo -e "$2" >> $2

}

# send the outputfile via email
function sendMAIL() {
$1

cat $1 | mail -s "Oracle Monitoring" $2 $3 $4

}

readLOG $content1 $content2 $OracleFile
sendMAIL $OracleFile $mail1 $mail2 $mail3

Aber kommt immer die Fehlermeldung :
Line 19: 28-11-2007: command not found
Line 20: 29-11-2007: command not found

und das sind die 2 zeilen datum1 und datum2

4

26.11.2007, 13:22

INI Datei

Außerdem finde ich im Netz leider NIX dazu, wie ich aus meinem Shellskript eine steuerbare INI-Datei mache. Wie ist der Aufbau solcher Datei und was zu beachten ist?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TheStarter« (26.11.2007, 13:23)


5

26.11.2007, 14:15

hallo TheStarter ...

... bei der zuweisung deiner suchmuster steht ein leerzeichen nach dem =
... deshalb klappt das mit der zuweisung nicht
... und das datum wird als befehl interpretiert

Zitat

datum1= `date -d"1 days ago" +'%d-%m-%y %H:%M:%S'`
datum2= `date +'%d-%m-%y %H:%M:%S'`


...
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

6

26.11.2007, 14:30

Danke für die Antwort.
Das ist mir nachher aufgefallen und ich habe es auch korrigiert. Aber nun werden alle Einträge selektiert.

7

26.11.2007, 14:57

... um zu sehen was dein script tut - oder was nicht - setzt du den debug-mode [-x]
... einfach in der ersten zeile anhängen:

#/bin/ksh -x

... oder an der stelle in deinem script aktivieren, an der du den fehler vermutest

set -x



... eine ini-datei liest du so ein, dass sie in der aktuellen shell gelesen wird
... punkt leerzeichen ini-datei

. /deinpfad/monitoring.ini

... letzen endes ist das nur eine auslagerung von funktionsbeschreibung, variablenzuweisung, parametern, flags, hilfetext, etc
... in deiner aufgabenstellung steht, dass du das script über eine solche datei steuern sollst
... also werden dort die vars und flags belegt
... in deinem script überprüfst du diese belegung und regierst entsprechend
...
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

8

26.11.2007, 15:15

Ini

erstmal Danke für die schnelle Antwort.

1- zu set -x : wo kommt es dann hin? ich habe keinen Fehler, nur die Grepierung nach den aktuellen Einträgen geht irgendwie nicht!!

2- Zu .ini: heißt das einfach statt monitor.sh als monitor.ini speichern?

3- Soll der Aufbau der ini-datei so aussehen:

[Oracle-Listener]
Pars1="-E '(Error|Warnning)'"
Pars2="XXXX"
FileName="/appl/local/oracle/network/log/listener.log"
DirOutput="/appl/tools/monitoring/log"
FileOutput="monitor.log"
[Oracle-Log]
Pars1="-E '(Error|;E)'"
Pars2="XXXX"
FileName="/appl/local/oracle/network/log/xxx.log"
DirOutput="/appl/tools/monitoring/log"
FileOutput="monitor.log"
[MySql-Log]
Pars1="-E '(Error|;YYY)'"
Pars2="XXXX"
FileName="/opt/local/mysql/mysql.log"
DirOutput="/appl/tools/monitoring/log"
FileOutput="monitor.log"

und danach die funktion schreiben?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TheStarter« (26.11.2007, 15:19)


Thema bewerten