0

I have a shell script which calls a bash script within it. when I run this shell script manually it works fine however when I schedule this thru cronjob, the bash script is not doing the intended job.

shell script is as follows:

#!/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

the BNSendmail is as follows:

#!/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 

As I said this is working perfectly fine when execute manually. only when I set this as a cronjob, its not emailing.

any help is appreciated.

Thanks and regards, basu

  • what is you cron entry for this ? in cron you can set SHELL var to be executed within specific shell – klerk Feb 16 '15 at 12:59
  • May or may not be related: #!/usr/bin/sh isn't likely to be a valid shebang. – muru Feb 16 '15 at 13:00
  • 1
    Did you try adding the full path instead of running as ./ ? – rahul Feb 16 '15 at 13:05
  • my crontab entry is as follows: – Basu Navindgi Feb 16 '15 at 13:05
  • 00 05 * * * /export/home/oracle/CMC/scripts/utils/SCTempConst/SCTempConst_Mail. – Basu Navindgi Feb 16 '15 at 13:06
0

Found the problem. it was not finding sendmail when executed through cron, I had to specify the full path of /usr/sbin/sendmail and it worked!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.