Null-Nachrichtentext; hoffe, das ist ok

Null-Nachrichtentext; hoffe, das ist ok

Ich habe den folgenden Befehl unten als Teil eines Cronjobs. Wenn ich den Befehl über Cron oder in der Befehlszeile ausführe, erhalte ich Null message body; hope that's ok.

Der Inhalt der E-Mail ist leer, aber wenn ich die /tmp/sdplogs.outDatei überprüfe, ist Inhalt vorhanden.

Das Skript /dproxy/scripts/cleanSDP2xLogs.shsendet die Ausgabe an die Datei /tmp/sdplogs.out.

Was mache ich falsch? Für jede Hilfe wäre ich sehr dankbar.

$ /dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Null message body; hope that's ok

Antwort1

Sie müssen entweder |durch ersetzen &&oder das Skript die Daten auf stdout ausgeben lassen und verwenden |.

Bei Verwendung wird &&der mailBefehl nur ausgeführt, wenn das Skript mit 0 beendet wird.

Wenn Sie das Pipe-Zeichen verwenden, muss Ihr Skript die Daten an stdout senden, damit die Pipe sie weitergeben kann mail.

In dem, was Sie geschrieben haben, schreibt das Skript Daten in die Datei und mailliest aus der Dateiparallel zu– und mailliest am Ende die Datei, bevor das Skript etwas hineingeschrieben hat.

Antwort2

/dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out

Sie leiten die Ausgabe cleanSDP2xLogs.shan den mailBefehl weiter, was Sie meines Erachtens nicht meinen. Es scheint, dass Sie zuerst cleanSDP2xLogs.sh/tmp/sdplogs.out generieren und dann /tmp/sdplogs.out in den Mail-Befehl einspeisen möchten.

Wenn dies der Fall ist, ersetzen Sie es einfach |durch ;und alles sollte gut gehen:

/dproxy/scripts/cleanSDP2xLogs.sh; mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out

Antwort3

Eine andere Möglichkeit hierfür ist die Verwendung -aals Anhang:

/dproxy/scripts/cleanSDP2xLogs.sh
mail -s 'SDP2.X Prod LogArchiving Report' -a /tmp/sdplogs.out [email protected] << ""

verwandte Informationen