Проблема с электронной почтой и выводом скрипта bash blcheck

Проблема с электронной почтой и выводом скрипта bash blcheck

Bash-скрипт blcheck из github проблемы с форматом при отправке по электронной почте

Вывод консоли отображается правильно, но при отправке на электронную почту через mailx он будет отправлен как вложение, а не как тело письма.
33%% dnsbl.inps.de ✓
50%% xbl.spamhaus.org ✓

Пример вывода в файл или по электронной почте:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net ✓ESC(BESC[m

Посоветуйте, пожалуйста, как мне исправить формат в файле и электронном письме?

CMD, который не отправляется в тело eamil:

sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheckдата" [email protected]

сценарий:https://github.com/IntellexApps/blcheck


После помощи @john1024 и @cas и предыдущего постаУдаление управляющих символовниже cmd решена проблема.

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 отправил запрос на включение изменений на github с новой опцией, позволяющей сделать вывод удобным для неинтерактивного использования.
https://github.com/IntellexApps/blcheck/pull/2

решение1

То, что вы видите, это управляющие последовательности ANSI. В blcheck, они используются для изменения цвета отображаемого текстана терминале. Как вы уже обнаружили, они не работают в сообщениях электронной почты.

Чтобы удалить их навсегда, отредактируйте blcheckскрипт в вашем любимом редакторе. Найдите строки:

RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)

И замените эти строки на:

RED=
GREEN=
YELLOW=
CLEAR=

blcheckЭто изначально предотвратит добавление последовательностей ANSI.

Более гибкий подход

Можно заставить код работать как для терминала (ANSI), так и для конвейера (не ANSI). Следующий код проверяет, является ли stdout терминалом. Если это так, он устанавливает переменные цвета в требуемые последовательности ANSI. Если это не терминал, последовательности ANSI не генерируются.

RED=
GREEN=
YELLOW=
CLEAR=
if [ -t 1 ]
then
    RED=$(tput setaf 1)
    GREEN=$(tput setaf 2)
    YELLOW=$(tput setaf 3)
    CLEAR=$(tput sgr0)
fi

Связанный контент