PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : aktuellste datei per mail versenden



frosch007
04-11-2008, 13:37
hallo

ich würde gerne folgende umsetzen:

ich habe ein programm, dass jeden tag eine logfile mit namen log_JJJJ-MM-TT.log erzeugt
nun will ich gerne die log datei des tages um 23.59 per mail versenden.

anbei mal mein script (vereinfacht)

#!/bin/bash

LOG='find -mtime -1"
mail -s Log-Datei ttt@ttt.com < $LOG

leider bekomme ich immer den fehler: ambiguous redirect

ich hoffe hier kann mir jemand helfen

danke im voraus

msi
04-11-2008, 16:25
hallo

ich würde gerne folgende umsetzen:

ich habe ein programm, dass jeden tag eine logfile mit namen log_JJJJ-MM-TT.log erzeugt
nun will ich gerne die log datei des tages um 23.59 per mail versenden.

anbei mal mein script (vereinfacht)

#!/bin/bash

LOG='find -mtime -1"
mail -s Log-Datei ttt@ttt.com < $LOG

leider bekomme ich immer den fehler: ambiguous redirect

ich hoffe hier kann mir jemand helfen

danke im voraus

versuch mal:
LOG=`find -mtime -1`

frosch007
05-11-2008, 07:54
hallo

leider funktioniert das auch nicht ...

allerdings habe ich gemerkt, dass wenn ich nur LOG=`find -mtime 1` ohne das minuszeichen vor der 1 schreibe es funktioniert

leider stimmt dann aber die ausgabe des aktuellsten files nicht mehr....

jan61
05-11-2008, 20:18
Moin,

kann es sein, dass es mehrere Dateien im durchsuchten Verzeichnis gibt, die vor weniger als 1 Tag aktualisiert wurden? Dann besteht $LOG aus mehreren Pfaden, das klappt dann natürlich nicht.

Außerdem: in welchem Pfad suchst Du denn? Und startest Du das Script per cron? Dann weißt Du überhaupt nicht, wo das Script zum Zeitpunkt des Aufrufs überhaupt aktuell gestartet wird. Ich empfehle einen vollständigen find-Aufruf mit absolutem Pfad, dann bist Du auch sicher, dass das Logfile, das Du haben willst, das gewünschte ist:

LOG=`find /pfad/zum/logverzeichnis -mtime -1 -print` Wenn dann mehrere Dateien kommen, dann musst Du über andere find-Optionen einschränken. Ach ja, nochwas: Prüfe vorher, ob in $LOG überhaupt was steht - kann ja sein, dass an dem Tag gar nichts geloggt wurde:

if test -n "$LOG"; then
mail ...
fiJan

meinereinerseiner
13-11-2008, 07:48
hi,

dein find -mtime -1 -print liefert immer 2 ergebnisse zurück.
Jetzt könntest du mit:

find -mtime -1 -print | tail -n 1
oder

cd /pfad && ls -1t | head -n 1
dein problem lösen.

ich würde allerdings direkt auf den dateinamen gehen und garnicht nach der aktuellsten suchen. den namen kennst du ja, warum also so kompliziert?

tom