![bash 스크립트 blcheck의 이메일 출력 문제](https://linux55.com/image/76531/bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20blcheck%EC%9D%98%20%EC%9D%B4%EB%A9%94%EC%9D%BC%20%EC%B6%9C%EB%A0%A5%20%EB%AC%B8%EC%A0%9C.png)
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
파일과 이메일의 형식을 수정하는 방법을 알려주세요.
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