/usr/bin/mail이 새 줄을 해석하지 않음

/usr/bin/mail이 새 줄을 해석하지 않음

고양이를 메일로 보낼 때 이상한 문제가 있습니다.

스크립트에서 복사된 폴더에 대한 보고서인 스크립트에서 컴파일된 간단한 텍스트 파일이 있습니다. 그런 다음 이 보고서를 이메일을 통해 시스템 관리자에게 보내고 싶습니다.

스크립트는 보고서를 정상적으로 생성합니다. 내가 달릴 때

cat /tmp/report.txt

예상할 수 있는 모든 줄 바꿈이 포함된 멋진 형식의 출력을 얻었습니다.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)
Copy completed on 2015.09.28 at 13:37:59
Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)
Copy completed on 2015.09.28 at 13:38:01
Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

그러나 어떤 이유에서인지 지금은 이것을 메일로 전송하고 있습니다.

cat /tmp/report.txt | mail -s "Copy Report" [email protected]

또는

mail -s "Copy Report" [email protected] < /tmp/report.txt

이것이 제가 받은 이메일입니다.

Copy report. Started on Mon Sep 28 13:37:57 BST 2015

Run in progress?: Yes

3 directories were copied.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:37:59
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14) Copy completed on 2015.09.28 at 13:37:59 Copy info:
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k
0inputs+355896outputs (0major+152minor)pagefaults 0swaps


Copy started on 2015.09.28 at 13:38:01
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18) Copy completed on 2015.09.28 at 13:38:01 Copy info:
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k
0inputs+355896outputs (0major+151minor)pagefaults 0swaps

무엇을 제공합니까? 줄바꿈이 있는 경우도 있고 없는 경우도 있습니다! vi와 nano 모두에서 파일 편집을 시도했고 줄 바꿈이 실제로 있는지 확인했습니다. 또한 삭제하고 다시 만들었으며 이메일 출력은 동일하게 유지됩니다.

/usr/bin/mail 사용

추가 정보:

나는 다음을 텍스트 파일에 직접 입력하고 동일한 파이프를 메일로 보냈습니다. 각 줄의 시작 부분에 "복사"라는 단어를 넣었습니다.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)
Copy completed on 2015.09.28 at 13:37:57
Copy info:
Copy 0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
Copy 0inputs+355896outputs (0major+150minor)pagefaults 0swaps

제가 이메일로 받은 내용은 다음과 같습니다.

Copy started on 2015.09.28 at 13:37:57
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Copy completed on 2015.09.28 at 13:37:57 Copy info:
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k
0inputs+355896outputs (0major+150minor)pagefaults 0swaps

그런 다음 "복사" 단어를 모두 제거했습니다. 이것이 제가 이메일로 받은 내용입니다.

Started on 2015.09.29 at 09:46:49
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10) Completed on 2015.09.29 at 09:46:49
Info:
0.00user 0.46system 0:01.98elapsed 23%CPU (0avgtext+0avgdata 2552maxresident)k
0inputs+355896outputs (0major+149minor)pagefaults 0swaps

복사라는 단어와 관련이 있는 줄 알았는데 줄바꿈 없이 한 줄이 남았네요!

이것은의 출력입니다cat -vet /tmp/report.txt

Copy report. Started on Mon Sep 28 13:37:57 BST 2015$
$
Run in progress?: Yes$
$
$
$
3 directories were copied.$
$
$
Copy started on 2015.09.28 at 13:37:57$
Copying /mnt/smb/New folder (10) to /mnt/backup/New folder (10)$
Copy completed on 2015.09.28 at 13:37:57$
Copy info:$
0.01user 0.47system 0:01.83elapsed 26%CPU (0avgtext+0avgdata 2668maxresident)k$
0inputs+355896outputs (0major+150minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:37:59$
Copying /mnt/smb/New folder (14) to /mnt/backup/New folder (14)$
Copy completed on 2015.09.28 at 13:37:59$
Copy info:$
0.00user 0.41system 0:01.78elapsed 23%CPU (0avgtext+0avgdata 2620maxresident)k$
0inputs+355896outputs (0major+152minor)pagefaults 0swaps$
$
$
Copy started on 2015.09.28 at 13:38:01$
Copying /mnt/smb/New folder (18) to /mnt/backup/New folder (18)$
Copy completed on 2015.09.28 at 13:38:01$
Copy info:$
0.00user 0.28system 0:01.71elapsed 16%CPU (0avgtext+0avgdata 2768maxresident)k$
0inputs+355896outputs (0major+151minor)pagefaults 0swaps$

답변1

아마도 "format=flowed"로 인해 어려움을 겪고 있을 것입니다.특징오래전에 소개된 내용을 참조하세요.RFC2646.

일부 줄에는 뒤에 공백 문자가 있는 것을 발견할 수 있습니다. 이는 일부 메일 리더에서는 "이 줄을 다음 줄과 연결한 다음 화면 너비에 맞게 줄 줄 바꿈을 다시 실행합니다"라는 의미로 해석됩니다.

일반적으로 이는 메일에 Content-Type헤더 옵션이 있는 경우에만 수행해야 format=flowed하지만 요즘에는 유닉스를 사용하지 않는 사람들로 인해 이것이 기본값이 되었습니다.

데이터에 사용하여 cat -vet후행 공백이 있는지 확인하세요. sed 's/ \+$//'제거하는 데 사용합니다 .


나는 귀하의 데이터에서 후행 공백이나 캐리지 리턴이 아닌 제어 문자를 보지 못했으므로 귀하의 메일러가 그것을 조작하는 것에 대한 실제 변명의 여지가 없습니다.

마지막 시도: Andrzej A. Filip이 제안한 대로 mail바로 sendmail. 이를 통해 명시적인 콘텐츠 유형 헤더를 추가할 수 있습니다. 예:

(echo 'Subject: Copy Report'
 echo 'Content-Type: text/plain; charset=us-ascii; format=fixed'
 echo
 cat /tmp/report.txt
) |  sendmail [email protected]

마지막은 echo데이터 전에 헤더를 끝내는 것입니다. sendmail이 PATH에 없을 수 있습니다. /sbin 및 /usr/sbin 등을 살펴보십시오.

관련 정보