ssmtp myaddress@gmail.com <file.log funktioniert nicht. Körper ist leer

433
brunobhr

Ich führe ein einfaches rsync-Skript aus, in dem stdout und stderr in zwei verschiedenen Dateien, rsync_stdout.log und rsync_stderr.log, protokolliert werden.

Wenn ich versuche, den Inhalt von rsync_stderr.log per E-Mail zu senden, verwenden Sie Folgendes:

echo $(cat rsync_stderr.log) | ssmtp myaddress@gmail.com 

Ich erhalte eine leere E-Mail-Nachricht, aber wenn ich:

echo $(cat rsync_stdout.log) | ssmtp myaddress@gmail.com 

dann habe ich mein stdout ohne problem in den körper der email eingetragen.

Hat es etwas mit rsyncs stderr-Ausgabedatei zu tun? Ich habe alles versucht, aber ich kann es einfach nicht verstehen.

Ich lief ssmtp als verbose:

[<-] 250 2.1.5 OK b48smxxx70wrb.1 - gsmtp [->] DATA [<-] 354 Go ahead b48smxxxxxx70wrb.1 - gsmtp [->] Received: by XXXNAS (sSMTP sendmail emulation); Tue, 19 Dec 2017 01:14:47 +0100 [->] From:"XXXNAS" <XXXNAS>> [->] Date: Tue, 19 Dec 2017 01:14:47 +0100 [->] rsync: delete_file: unlink(.AppleDB/log.0000000001) failed: Permission denied (13) [->] rsync: delete_file: unlink(.AppleDB/lock) failed: Permission denied (13) [->] rsync: delete_file: unlink(.AppleDB/db_errlog) failed: Permission denied (13) [->] rsync: delete_file: unlink(.AppleDB/cnid2.db) failed: Permission denied (13) [->] rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178)  [->] [sender=3.1.2] [->]  [->] . [<-] 250 2.0.0 OK 1513642487 b48sxxxxxxrb.1 - gsmtp [->] QUIT [<-] 221 2.0.0 closing connection b4xxxxxwrb.1 - gsmtp 

Ich kann also den gesendeten Text sehen, aber der Text der E-Mail ist leer.

Ich habe auch versucht ssmtp myaddress@gmail.com <rsync_stderr.log, aber es funktioniert auch nicht.

1
Haben Sie überprüft, ob die stderr.log leer ist? Thu Yein Tun vor 6 Jahren 0
Ja, es ist nicht. Wenn ich nur: echo $ (cat rsync_stderr.log) mache, wird die Protokolldatei gut angezeigt. brunobhr vor 6 Jahren 0

2 Antworten auf die Frage

1
Almendrico

Nun, was ist der Unterschied zwischen beiden Protokollen? Sie zeigen nur einen von ihnen.

Ich glaube, dass das Zeichen ":" in diesem Protokoll als Steuerzeichen auf der SMTP-Serverseite angesehen wird. Sie müssen vor dem Mailtext '\ n' hinzufügen

`rsync: delete_file: unlink (.AppleDB / log.0000000001) fehlgeschlagen: Berechtigung abgelehnt (13) rsync: delete_file: unlink (.AppleDB / lock) fehlgeschlagen: Berechtigung abgelehnt (13) rsync: delete_file: unlink (.AppleDB / db_errlog) fehlgeschlagen: Berechtigung verweigert (13) rsync: delete_file: unlink (.AppleDB / cnid2.db) fehlgeschlagen: Berechtigung verweigert (13) rsync-Fehler: Einige Dateien / Attribute wurden nicht übertragen (siehe vorherige Fehler) (Code $ sender = 3.1.2.) ` brunobhr vor 5 Jahren 0
Vielen Dank für Ihre Antwort und Entschuldigung für die späte Antwort. Ich hatte die Hoffnung verloren, eine Lösung zu finden. Ich habe gerade den err.log gepostet. Ich habe am Anfang versucht, \ n hinzuzufügen, aber es hat nicht funktioniert. Die E-Mail ist noch leer. brunobhr vor 5 Jahren 0
Danke, Almendrico, dass du mich auf den Weg gebracht hast .. Ich habe das Zeichen `:` mit sed ausgezogen und ich kann das err.log bekommen. brunobhr vor 5 Jahren 0
0
brunobhr

Nachdem der Benutzer almendrico mich auf den Weg gebracht hatte, benutzte ich:

sed 's/[\:]//g'um den :Charakter zu entfernen .

Nicht sehr elegant, aber funktioniert.