bash 스크립트 blcheck 출력과 관련된 이메일 문제

bash 스크립트 blcheck 출력과 관련된 이메일 문제

이메일 출력 시 github 형식 문제의 Bash 스크립트 blcheck

콘솔 출력은 올바르게 표시되지만 mailx를 통해 이메일로 전송되면 본문이 아닌 첨부 파일로 이동됩니다.
33%% dnsbl.inps.de ✓
50%% xbl.spamhaus.org ✓

파일 또는 이메일로 출력 예:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net ✓ESC(BESC[m

파일 및 이메일의 형식을 어떻게 수정할 수 있는지 알려주세요.

eamil 본문으로 전송되지 않는 CMD:

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

관련 정보