Bash-Skript blcheck von GitHub - Formatprobleme beim Versenden von E-Mail-Ausgaben
Die Konsolenausgabe wird korrekt angezeigt, aber beim Senden per E-Mail über Mailx wird sie als Anhang gesendet und nicht in den Textkörper.
33 %% dnsbl.inps.de ✓
50 %% xbl.spamhaus.org ✓
Beispiel für die Ausgabe in eine Datei oder per E-Mail:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net ✓ESC(BESC[m
Bitte geben Sie mir einen Rat, wie ich das Format in Datei und E-Mail korrigieren kann?
CMD, das nicht an den E-Mail-Text gesendet wird:
sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheck
Datum" [email protected]
Skript:https://github.com/IntellexApps/blcheck
Nach Unterstützung von @john1024 & @cas und vorherigem BeitragEntfernen von SteuerzeichenDas Problem wurde mit dem folgenden Befehl behoben.
CMD: ./blcheck-l -v xx.xx.xx.xx | perl -pe 's/\e([^[]]|[.*?[a-zA-Z]|].*?\a)//g' | col -b | mail -s "blcheck-l -v `date`" email@address
darko-poljak hat auf GitHub einen Pull Request mit einer neuen Option eingereicht, um die Ausgabe für die nicht interaktive Verwendung benutzerfreundlich zu gestalten.
https://github.com/IntellexApps/blcheck/pull/2
Antwort1
Was Sie sehen, sind ANSI-Escape-Sequenzen. In blcheck
werden sie verwendet, um die Farben des angezeigten Textes zu ändernam Terminal. Wie Sie festgestellt haben, funktionieren sie in E-Mail-Nachrichten nicht.
Um sie dauerhaft zu entfernen, bearbeiten Sie das blcheck
Skript mit Ihrem bevorzugten Editor. Suchen Sie die Zeilen:
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)
Und ersetzen Sie diese Zeilen durch:
RED=
GREEN=
YELLOW=
CLEAR=
Dadurch wird blcheck
das Hinzufügen der ANSI-Sequenzen von vornherein verhindert.
Flexiblerer Ansatz
Es ist möglich, den Code entweder für das Terminal (ANSI) oder eine Pipeline (kein ANSI) zum Laufen zu bringen. Der folgende Code prüft, ob stdout ein Terminal ist. Wenn dies der Fall ist, setzt er die Farbvariablen auf die erforderlichen ANSI-Sequenzen. Wenn es kein Terminal ist, werden keine ANSI-Sequenzen generiert.
RED=
GREEN=
YELLOW=
CLEAR=
if [ -t 1 ]
then
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)
fi