Проблема с выпуском скрипта 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 [м

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

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

sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheck sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheck date " user@email.exampel

script: https://github.com/IntellexApps/blcheck


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

 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

  • В чем разница между использованием команды shell (например, foo) напрямую и использованием $ (foo)?
  • Почему * не * разбирать `ls`?
  • Почему я получаю синтаксическую ошибку с моей арифметикой Shell?
  • Почему после этого точка с запятой не принимается?
  • Мультиплексные копии scp
  • Как запустить программу из оболочки bash без ее запуска в процессе оболочки
  • Существует ли стандартная аббревиатура для 'find. -name foo 'или мне нужна функция для этого?
  • Выполнить команду, когда система неактивна и когда она активна снова
  • One Solution collect form web for “Проблема с выпуском скрипта bash blcheck”

    Что вы видите, это escape-последовательности 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 
    Linux и Unix - лучшая ОС в мире.