samson24
Goto Top

server.log als ausgegeben text via bash senden

Guten Tag erstmal an alle...

Ich bin auf der Suche nach einem Bash /Script/Befehl
der mir eine server.log datei ausliest und diese mir dann als "klartext"
per eMail zusendet.

Das was ich derzeit zustande bekommen habe, funktioniert nicht so ganz.

Hier einmal der Code:
/
#!/bin/bash
  1. script to send simple email
  2. email subject
SUBJECT="SET-EMAIL-SUBJECT"
  1. Email To ?
EMAIL="logmail@domain.net"
  1. Email text/message
EMAILMESSAGE="server.log"
echo "This is an email message test"> $EMAILMESSAGE
echo "This is email text" >>$EMAILMESSAGE
  1. send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
/

die Zuständigen Maildaten habe ich natürlich richtig ausgefüllt
und die Datei die er auslesen soll eingetragen.

Er sendet mir diese aber immer als Anhang.
Zudem ist der Anhang immer eine Unbekannte Datei mit dem Namen
des $SUBJECT.

Wäre schön, wenn mir jemand helfen könnte.

Danke schon einmal im Voraus.

Stefan alias SaMsOn24

Content-Key: 93719

Url: https://administrator.de/contentid/93719

Printed on: April 26, 2024 at 17:04 o'clock

Member: SnowStar
SnowStar Aug 06, 2008 at 06:47:31 (UTC)
Goto Top
Klar, du gibst eine Datei als Nachricht an, also packt er sie dazu - würde ich zumindest einfach mal tippen face-wink

Als EMAILMESSAGE solltest du die Ausgabe von cat nutzen
#!/bin/bash
SUBJECT="SET-EMAIL-SUBJECT"  
EMAIL="logmail@domain.net"  
EMAILMESSAGE=$(cat /var/log/mail.log)
EMAILMESSAGE="server.log"  
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE  

Die beiden echo's habe ich mal draussen gelassen, so wie hier funktioniert das Script (zumindest bei mir ;) ).
Member: SaMsOn24
SaMsOn24 Aug 06, 2008 at 11:34:53 (UTC)
Goto Top
Danke.. so gehts...

gibt es die möglichkeit die logfile leeren zu lassen, nachdem der inhalt via mail versand worden ist?
Schwierigkeit hierbei ist, das die Logdatei nicht gelöscht und neu erstellt werden darf.
es darf rein nur der inhalt "geleert" werden.

mein derzeitiger befehl, den ich verwendet habe hat leider nicht funktioniert.

echo "" > server.log

da wurde die logdatei "zerstört"
d.h. er hat sie zwar geleert aber das programm was auf die datei zugreift, konnte dann nichts mehr
eintragen.
Somit unbrauchbar.
Member: SnowStar
SnowStar Aug 06, 2008 at 12:45:01 (UTC)
Goto Top
Datei löschen und neu anlegen, anschließend ein chmod / chown, so dass der User unter dem das Programm läuft welches das Logfile schreibt zum Besitzer mit allen Rechten (abgesehen vom ausführen) wird.

Da oben war auch ein Fehler drinnen:
#!/bin/bash
SUBJECT="SET-EMAIL-SUBJECT"  
EMAIL="logmail@domain.net"  
EMAILMESSAGE=$(cat /var/log/mail.log)
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE  

So muss es richtig heißen face-wink
Member: SaMsOn24
SaMsOn24 Aug 08, 2008 at 02:13:31 (UTC)
Goto Top
also im endefekt...

#!/bin/bash
SUBJECT="SET-EMAIL-SUBJECT"
EMAIL="logmail@domain.net"
EMAILMESSAGE=$(cat /var/log/mail.log)
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

rm server.log #datei löschen
touch server.log #datei erstellen
chmod 644 server.log #rechte setzen
chown -R user server.log #an user binden

exit 0


Meintest du das so?
Member: SnowStar
SnowStar Aug 08, 2008 at 07:04:03 (UTC)
Goto Top
Vom Ablauf her mal richtig, so war es gedacht - funktioniert es denn auch?
Ich würde intuitiv nu den CHMOD nach dem CHOWN setzen.
Für eine einzelne Datei kannst du das -R auch weglassen face-wink

rm server.log #datei löschen
touch server.log #datei erstellen
chown user:gruppe server.log #an user binden
chmod 644 server.log #rechte setzen