Eine TXT- oder Log-Datei kann nicht an den Mail- und Mailx-Befehl angehängt werden

Eine TXT- oder Log-Datei kann nicht an den Mail- und Mailx-Befehl angehängt werden

Ich versuche, eine .log- oder .txt-Datei an den Mail-Befehl anzuhängen, um eine E-Mail zu senden, sobald mein KSH-Skript ausgeführt wurde. Ich kann den Mutt-Befehl nicht verwenden, da er nicht auf meinem Computer installiert wurde und ich ihn nicht installieren soll. Ich habe viele Möglichkeiten durch Googeln ausprobiert, aber es hat mir nicht geholfen.

Hier ist meine Anforderung: Ich muss etwa 10 SQL-Abfragen ausführen und das Ergebnis muss per E-Mail-Anhang gesendet werden. Ich habe dies Check.kshund führe dies mithilfe nohupdes Befehls aus.

nohup Check.ksh > Valid_Check.log 2>&1 &

In Check.ksh

typeset var TO="[email protected]";
typeset var SUB="Report";
typeset var BODY="Check Completed";
typeset var ATTACHMENT=${FILE_PATH}/Valid_Check.log

if [ -f "${ATTACHMENT}" ]; then 
echo "Log file exist";
else
echo "No Log File";
fi

uuencode Valid_Check.log Valid_Check.log | mail -s "${SUB}" "${BODY}" ${TO}

und habe auch das Folgende versucht

#mailx -s "${SUB}" "${TO}" "${BODY}" < ${FILE_PATH}/Valid_Check.log

#cat ${FILE_PATH}/Valid_Check.log | mailx -s "${SUBJECT}" "${TO}" "${BODY}";

Der obige Code erzeugt einen Fehler wie „Gültig... Benutzer unbekannt“

Wären alle Eingaben hilfreich oder gibt es einen anderen einfachen/leichten Ansatz?

Danke,

Antwort1

Wenn Sie ein aktuelles Dokument haben mailx, verwenden Sie die -aOption zum Hinzufügen eines Anhangs.

mailx -s "$SUB" -a "Valid_Check.log" "$TO" <<<"$BODY"

Siehe auchhttps://access.redhat.com/solutions/104833

Wenn Sie hoffnungslos in einem früheren Jahrtausend feststecken und über keine Software verfügen, die ordnungsgemäße Anhänge verarbeiten kann, sollten die Uuencode-Daten einfach an den Text angehängt werden.

( echo "$BODY"; echo; uuencode Valid_check.log Valid_check.log ) |
mailx -s "$SUB" "$TO"

Der grundlegende Ansatz leidet jedoch unter einem Race Condition - die Existenz der Ausgabedatei zeigt an, dass der Cron-Jobgestartet,nicht abgeschlossen. Das Einfügen des Mail-Befehls an das Ende des Cron-Jobs würde dieses Problem beheben. Dann wird die E-Mail erst gesendet, wenn der vorherige Schritt abgeschlossen ist.

verwandte Informationen