"mail:sender" не работает из cron, но работает при запуске вручную

У меня есть сценарий оболочки, который в свою очередь вызывает сценарий Perl. Perl-скрипт имеет функцию отправки почты. Сценарий работает очень хорошо, когда я запускаю его вручную из командной строки и доставляет почту, в то время как по расписанию из crontab оболочка и perl выполняются в соответствии с журналом, но почта не доставляется.

Пожалуйста, найдите ниже фрагмент кода


Сценарий оболочки: rmail.sh

#!/bin/sh

. /home/pm_prod/.bash_profile
export PATH=$PATH:/home/orapps/client/oracle/product/10.2.0/client_1/bin:/usr/kerberos/bin:/data2/software/oracle/product/10.2.0/client_1/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/pm_prod/bin/:

perl  /home/pm_prod/PM/bin/ALERT/rmail.pl

Сценарий оболочки: rmail.pl

#!/usr/bin/perl -w
use strict;
use Mail::Sender;

# Send the file.  Change all variables to suit
my $sender = new Mail::Sender
{
    smtp => 'some.smtpserver.com',
    from => 'somename@somedomain.com'
};

$sender->MailFile(
{
    to      => 'somename@somedomain.com',
    subject => 'File',
    msg     => "Here is the data.\n",
    file    => '/home/pm_prod/PM/bin/ALERT/attachement_file.txt',
});

CronTab Entry

* * * * * sh /home/pm_prod/PM/bin/ALERT/rmail.sh

пожалуйста, помогите мне

2 ответа

Проблема с переменными среды, мы должны убедиться, что все переменные среды при запуске вручную применимы и из crontab. Я следовал ниже шагов для достижения этого

1. Get the current ENV variables from normal user and put them in to a file
env > /home/pm_prod/workspace/pmenv

2. Copy the content of pmenv file to my rmail.sh script

3. Now schedule rmail.sh script in crontab.

    Note : If you are too tired to test the script in crontab, you an optionally try to create a cron type environment with below command and test them before actually scheduling them as mentioned in point 3
* * * * * env > /home/pm_prod/workspace/cronenv
env - `cat /home/pm_prod/workspace/cronenv` /bin/sh

Рагу

Попробуйте это в cron:

* * * * * /bin/sh /home/pm_prod/PM/bin/ALERT/rmail.sh

Или же

 * * * * * /usr/bin/sh /home/pm_prod/PM/bin/ALERT/rmail.sh
Другие вопросы по тегам