PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei abholen und per Mail verschicken



hippoth
17.06.10, 18:27
Hallo Leute,

ich habe einen ESXi Server mit einem sehr kastriertem Linux drauf (BusyBox). dort wird jeden Tag ein Log erzeugt, welches ich gerne per Mail verschicken möchte. Der ESXi Server kann das selber nicht machen, da er keinerlei Mailfunktionalität besitzt, daher will ich gerne einen vorhandenen Debian Server nutzen.
Ich stelle mir vor, dass er sich die Datei holt und dann per Mail verschickt.

Kann mir jemand sagen was für Möglichkeiten ich habe um an das Log des ESXi Servers zu kommen?

Die beiden Server befinden sich übrigens im gleichen Netz.

cane
17.06.10, 18:37
Per scp kopieren und dann versenden zum Beispiel.

mfg
cane

hippoth
21.06.10, 12:41
Per scp kopieren und dann versenden zum Beispiel.

mfg
cane
Ich danke dir cane, war ein super Tipp!

hippoth
21.06.10, 12:43
Hat vielleicht noch jemand einen Tipp wie ich das zu verschickende Logfile nach Stichwörtern durchsuchen kann, wie z.B. "error" oder dergleichen und das dann in den Betreff oder in den Body der Mail zu schreiben oder einfach nur einen Hinweis auf ein Problem?

HirschHeisseIch
21.06.10, 12:49
Grep zum Beispiel?

Los_Andros
21.06.10, 12:50
grep ist Dein Freund.

Also:
grep "SUCHWORT" DATEINAME

Wenn Du das weiterverarbeiten willst, dann suche mal nach Tutorials von grep in Verbindung mit sed und awk. Da lässt sich eigentlich fast alles machen.

hippoth
21.06.10, 16:14
Ok, grep habe ich, ich bekomme die Infos die ich haben will. Wie kann ich die Ausgabe in den Body übernehmen? Ich komme an der Stelle nicht weiter :confused:

Ich benutze sendEmail als Tool zum Versenden der Mails.

Blade
21.06.10, 21:24
Da musst Du Dir ein kleines Script basteln mit dem die Befehlen und die Monitor-Ausgaben per ECHO-Befehl dann in eine Datei gespeichert werden und dann diese zum Schluss per Mail mit sendmail verschickt wird. Das klappt perfekt.

HBtux
22.06.10, 10:34
die grep-Ausgabe in eine Temp-Datei umleiten und per Pipe an den Sendmail-Befehl übergeben.... (oder direkt per grep an Sendmail übergeben...)

Oder bastelst quasi eine "E-Mail Steuerdatei" mit dem kompletten Header und Body per Script zusammen und ließt die Mail-Datei dann per Sendmail ein....


Hier findest Du noch die Beschreibung zum Befehl "sendmail" unter BusyBox....
http://www.busybox.net/downloads/BusyBox.html

Tipp:
Ich würde noch eine Beschränkung der Zeilenanzahl mit in das Script bauen....
Sonst kann der Schuß mal nach hinten losgehen und die erhälst wegen irgendeinem doofen Problems ein E-Mail mit mehreren taußend Zeilen voller Schrott-Meldungen.

hippoth
22.06.10, 12:04
Hi Leute,

ich habe jetzt alles mittels eines kleinen Scriptes realisiert ...

Das Script mailt mir die Log-Datei zu und schreibt in den Body eventuelle Fehler und hängt aber trotzdem die Logdatei an. Ist kein Fehler drin, dann ist nur die Logdatei dabei ...


#!/bin/sh
rm /nfs/backup/server1/Backup_Log.log
rm /nfs/backup/server1/messages
scp 10.0.0.2:/vmfs/volumes/4b72b2bf-942e9392-8b5e-e41f132c7546/Backup_Log.log /nfs/backup/server1
touch /nfs/backup/server1/messages
cat /nfs/backup/server1/Backup_Log.log | grep -ri error >> /nfs/backup/server1/messages
sendEmail -s 10.0.0.1 -f absender@domain.de -u "Backup-Log SERVER1 $(date +\%A-%d-%b-%Y)" -t empfaenger@domain.de -o message-file=/nfs/backup/server1/messages -a /nfs/backup/server1/Backup_Log.log

Ich denke das ist ganz passabel und danke Euch trotzdem für die nützlichen Hinweise!

hippoth
22.06.10, 14:05
Es geht sogar noch einfacher ...


#!/bin/sh
rm /nfs/backup/server1/Backup*.log
scp 10.0.0.2:/vmfs/volumes/4b72b2bf-942e9392-8b5e-e41f132c7546/Backup_Log.log /nfs/backup/server1/Backup_SERVER1-$(date +\%A-%d-%B-%Y).log
grep -ri error /nfs/backup/server1/Backup*.log | sendEmail -s 10.0.0.1 -f absender@domain.de -u "Backup-Log SERVER1 $(date +\%A-%d-%b-%Y)" -t empfaenger@domain.de -a /nfs/backup/server1/Backup*.log

Damit scp ohne Kennwortabfrage läuft habe ich übrigens eine SSH keybased Authentifikation eingerichtet.

Kann mir vielleicht noch jemand sagen, wie ich die Logs, auf dem Server auf dem ich die abhole, auch löschen kann? SCP bietet ja leider kein ausschneiden, nur ein kopieren an. SFTP fällt übrigens als Lösung aus, da die BusyBox das nicht hergibt, nicht einmal ein "sendmail".

drcux
22.06.10, 14:10
ssh root@server1 "rm wasauchimmer"

hippoth
22.06.10, 15:07
ssh root@server1 "rm wasauchimmer"
Stimmt, hätte ich auch selber drauf kommen können :ugly:


Kann mir vielleicht jemand sagen wie ich nach mehreren Wörtern mittels grep suchen kann? Ein "grep -ri wort1 /backup.log | xargs grep -ri wort2" bringt nichts bzw. sagt mir nur "Datei oder Verzeichnis nicht gefunden" :confused:

HBtux
22.06.10, 15:21
egrep 'wort1|wort2|satz1 mit mehreren woertern'

hippoth
22.06.10, 15:36
egrep 'wort1|wort2|satz1 mit mehreren woertern'
Super, danke das funktioniert :)

Blade
22.06.10, 19:49
Du kannst das Löschen ... "rm wasauchimmer" .. auch per Cornjob 1 x nachts laufen lassen und gut ist.

HBtux
22.06.10, 21:42
Wobei der cronjob stur löscht, egal ob die Datei abgeholt wurde oder nicht.....

Ich würde wenn schon löschen, wenn die Daten erfolgreich gelesen wurden....

Blade
22.06.10, 21:48
Nun ja, wenn das Script mit dem regelmäßigen Abholen der Datei funktioniert, sollte das Löschen per Cronjob nicht das Problem sein.

HBtux
23.06.10, 11:04
Nun ja, wenn das Script mit dem regelmäßigen Abholen der Datei funktioniert, sollte das Löschen per Cronjob nicht das Problem sein.
Ist Dir doch sicherlich auch schon mal passiert...
Ein Glied in der Kette funktioniert nicht richtig und schon kommt es zu unvorhergesehene Ereignissen....
Der Cronjob löscht munter die Log und nach ein paar Tagen merkt man dann, das das Script die Logs gar nicht mehr abgeholt hat....


Beim Zeitgesteuerten Löschen der Logs kann es auch zu überschneidungen kommen...
Wenn z.B. wie in diesem Fall die Logdatei einmal an Tag geholt wird.
Sagen wir mal um 22:00 Uhr.
Das Löschen der Logdatei ist z.B. auf 22:15 Uhr eingestellt.

So - nun kommt man mal nach einen halben Jahr auf die Idee, die Zeit für das Abholen der Log auf 0:00 Uhr zu ändern und denke aber nicht mehr daran, dass die Log auf dem anderen Server lokal um 22:15 Uhr gelöscht wird.....!
( soll alles schon mal vorgekommen sein... :rolleyes: )