我有一个 shell 脚本,它在其中调用 bash 脚本。当我手动运行这个 shell 脚本时,它工作正常,但是当我通过 cronjob 安排这个脚本时,bash 脚本没有完成预期的工作。
shell脚本如下:
#!/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 时,它才不会发送电子邮件。
任何帮助表示赞赏。
谢谢和问候,巴苏
答案1
发现问题了。sendmail
通过 执行时没有找到cron
,我必须指定 的完整路径/usr/sbin/sendmail
并且它有效!