ksh 스크립트가 실행되면 이메일을 보내기 위해 .log 파일 또는 .txt 파일을 mail 명령에 첨부하려고 합니다. 내 컴퓨터에 mutt 명령이 설치되어 있지 않고 설치할 수도 없기 때문에 mutt 명령을 사용할 수 없습니다. 나는 성공하는 데 도움이 되지 않은 인터넷 검색을 통해 여러 가지 방법을 시도했습니다.
내 요구 사항은 다음과 같습니다. 약 10개의 SQL 쿼리를 실행하고 결과를 첨부 파일을 통해 이메일로 보내야 합니다. 나는 명령을 Check.ksh
사용하여 이것을 실행하고 있습니다 nohup
.
nohup Check.ksh > Valid_Check.log 2>&1 &
Check.ksh에서
typeset var TO="[email protected]";
typeset var SUB="Report";
typeset var BODY="Check Completed";
typeset var ATTACHMENT=${FILE_PATH}/Valid_Check.log
if [ -f "${ATTACHMENT}" ]; then
echo "Log file exist";
else
echo "No Log File";
fi
uuencode Valid_Check.log Valid_Check.log | mail -s "${SUB}" "${BODY}" ${TO}
그리고 아래도 시도했습니다
#mailx -s "${SUB}" "${TO}" "${BODY}" < ${FILE_PATH}/Valid_Check.log
#cat ${FILE_PATH}/Valid_Check.log | mailx -s "${SUBJECT}" "${TO}" "${BODY}";
위의 코드에서는 "유효한... 사용자를 알 수 없음"과 같은 오류가 발생합니다.
어떤 의견이라도 도움이 되거나 다른 간단하고 쉬운 접근 방식이 있습니까?
감사해요,
답변1
최신 파일이 있는 경우 첨부 파일을 추가하는 옵션을 mailx
사용하세요 .-a
mailx -s "$SUB" -a "Valid_Check.log" "$TO" <<<"$BODY"
또한보십시오https://access.redhat.com/solutions/104833
절망적으로 이전 밀레니엄에 갇혀 있고 적절한 첨부 파일을 처리할 수 있는 소프트웨어가 없다면 uuencode 데이터를 본문에 간단히 추가해야 합니다.
( echo "$BODY"; echo; uuencode Valid_check.log Valid_check.log ) |
mailx -s "$SUB" "$TO"
그러나 기본 접근 방식은 경쟁 조건으로 인해 어려움을 겪습니다. 출력 파일이 존재한다는 것은 cron 작업이시작했다,끝나지 않았습니다. cron 작업 끝에 mail 명령을 넣으면 이 문제가 해결됩니다. 그러면 이전 단계가 완료될 때만 이메일이 전송됩니다.