
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に設定した場合にのみ電子メールは送信されません。
助けてくれてありがとう。
ありがとう、バス
答え1
問題が発見されました。sendmail
notfoundを実行してcron
フルパスを指定しなければなりません/usr/sbin/sendmail
でした。