bash 스크립트를 호출하는 쉘 스크립트가 있습니다. 이 셸 스크립트를 수동으로 실행하면 제대로 작동하지만 cronjob을 통해 이 스크립트를 예약하면 bash 스크립트가 예상대로 작업을 수행하지 않습니다.
쉘 스크립트는 다음과 같습니다:
#!/usr/bin/sh
SHDIR=/oracle/CMC/scripts/utils/SCTempConst
export ORACLE_SID ORACLE_HOME SHDIR TIMESTMP DATESTAMP
cd $SHDIR
TO=<actual email address>
BCC=<actual email address>
if [ -f /oracle/CMC/scripts/utils/SCTempConst/SCTempConst.xlsx ]
then
SUBJECT="Subject ...."
ATTCH=SCTempConst.xlsx
export TO BCC SUBJECT ATTCH SHDIR
./BNSendMail.sh
fi
BNSendmail은 다음과 같습니다.
#!/bin/bash
cd ${SHDIR}
FROM="<from email id>"
boundary="ZZ_/afg6432dfgkl.94531q"
body=`cat msg.txt`
# Build headers
{
printf '%s\n' "From: $FROM
To: $TO
Cc: $CC
Bcc: $BCC
Subject: $SUBJECT
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=\"$boundary\"
--${boundary}
Content-Type: text/plain; charset=\"US-ASCII\"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
$body
"
mimetype1=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
printf '%s\n' "--${boundary}
Content-Type: $mimetype1
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"${ATTCH}\"
"
base64 "${SHDIR}/${ATTCH}"
echo
# print last boundary with closing --
printf '%s\n' "--${boundary}--"
} | sendmail -t -oi
내가 말했듯이 수동으로 수행하면 매우 잘 작동합니다. cronjob으로 설정한 경우에만 이메일이 전송되지 않습니다.
도움을 주시면 감사하겠습니다.
감사합니다, Basu
답변1
문제가 발견되었습니다. sendmail
notfound를 실행하여 cron
전체 경로를 지정해야 했고 /usr/sbin/sendmail
작동했습니다!