LINUX.ORG.RU

Perl скрипт crontab замаялся


0

0

#!/usr/bin/perl -w
...............
...............
my $mailcmd = "/usr/bin/echo \"$letterbody\" | /usr/bin/mailx -r $from -s \"$subject\" \"$to\"";

system ($mailcmd);


Из консоли письмо отправляется. Из cron нет.
$letterbody содержит переводы строк.
Если не содержит, то отправляется и из cron.

Почему????

PS Вариант через tmp файл не нравится.


> my $mailcmd = "/usr/bin/echo \"$letterbody\" | /usr/bin/mailx -r $from -s \"$subject\" \"$to\"";

> system ($mailcmd); 

Ужас какой.

open($fd, "| /usr/bin/mailx -r $from -s \"$subject\" \"$to\"");
print($fd, $letterbody);


anonymous
()
Ответ на: комментарий от tux2002

use Net::SMTP;
$s_smtp = '192.168.1.206';
sub mail{
my ($m_from, $mess, $subj, @m_to)=@_;
my $mail = Net::SMTP->new($s_smtp);
$mail->mail($m_from);
$mail->recipient(@m_to);
$mail->data();
$mail->datasend("To: @m_to\n");
$mail->datasend("From: $m_from\n");
$mail->datasend("Subject: $subj");
$mail->datasend("\n");
$mail->datasend("$mess");
$mail->datasend();
$mail->quit;
}

gnomino
()

У тебя в $letterbody наверняка какие-нибудь некошерные символы. Наверняка chomp($letterbody) не сделал.

r_asian ★☆☆
()
Ответ на: комментарий от tux2002

Ну если заюзал перл - не судьба пользоватся готовыми перловыми модулями для отправки писем ?

SI ★★☆☆
()
Ответ на: комментарий от SI

>и после такого пионэры говорят что перл - лажа

после такого перл говорит, что пионеры - лажа

teferiincub
()

system "/usr/bin/echo \"$letterbody\" | /usr/bin/mail -r $from -s \"$subject\" \"$to\"";
open($fd, "| /usr/bin/mailx -r $from -s \"$subject\" \"$to\"");
print $fd $letterbody;
#print($fd, $letterbody);

print "/usr/bin/echo \"$letterbody\" | /usr/bin/mail -r $from -s \"$subject\" \"$to\"";


use Net::SMTP;
    my $mail = Net::SMTP->new("127.0.0.1");
    $mail->mail($from);
    $mail->recipient($to);
    $mail->data();
    $mail->datasend("To: $to\n");
    $mail->datasend("From: $from\n");
    $mail->datasend("Subject: $subject\n");
    $mail->datasend("Content-Type: text/plain; charset=utf-8\n");
    $mail->datasend("\n");
    $mail->datasend("$letterbody");
    $mail->datasend();
    $mail->quit;

Запускаю из консоли - получаю все три письма.
Из crontab root, не root отрабатывает только Net::SMTP;

Развёртка шелл команды:

/usr/bin/echo " Состояние дисковой квоты (почтового ящика)
на сервере mail.mydomain.ru для пользователя ivanov@mydomain.ru:

использовано 976.51171875 M из 976.5625 M (99.9948%)
из них почтовый ящик занимает 977M

Если размер почтового ящика много меньше использованного места,
рекомендуем Вам проверить и почистить каталог \\mail\ivanov.

Если почтовый ящик занимает основную часть использованного места,
рекомендуем Вам очистить Ваш почтовый ящик с помощью почтового клиента по Вашему усмотрению.

При достижении использования ресурса на 100%, служба системного администрирования не гарантирует
доставку писем в Ваш почтовый ящик.

                Служба системного администрирования.
                 mail to: postmaster@mydomain.ru


-----------------------------------------------------------------

Информация для postmaster:

/usr/bin/quota ivanov:
Disk quotas for user ivanov (uid 10375):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/data-cluster--home
                 999948  1000000 1000100               4   50000  100000

ivanov:*:10375:10004:Иванов Иван Иванович:/cluster-home/home/ivanov:/bin/false


" | /usr/bin/mail -r postmaster@mydomain.ru -s "WARNING: quota on mail for ivanov" "ivanov@mydomain.ru"

Её выполнение:

/usr/bin/echo " Состояние дисковой квоты (почтового ящика)
> на сервере mail.mydomain.ru для пользователя ivanov@mydomain.ru:
>
> использовано 976.51171875 M из 976.5625 M (99.9948%)
> из них почтовый ящик занимает 977M
>
> Если размер почтового ящика много меньше использованного места,
> рекомендуем Вам проверить и почистить каталог \\mail\ivanov.
>
> Если почтовый ящик занимает основную часть использованного места,
> рекомендуем Вам очистить Ваш почтовый ящик с помощью почтового клиента по Вашему усмотрению.
>
> При достижении использования ресурса на 100%, служба системного администрирования не гарантирует
> доставку писем в Ваш почтовый ящик.
>
>                 Служба системного администрирования.
>                  mail to: postmaster@mydomain.ru
>
>
> -----------------------------------------------------------------
>
> Информация для postmaster:
>
> /usr/bin/quota ivanov:
> Disk quotas for user ivanov (uid 10375):
>      Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
> /dev/mapper/data-cluster--home
>                  999948  1000000 1000100               4   50000  100000
>
> ivanov:*:10375:10004:Иванов Иван Иванович:/cluster-home/home/ivanov:/bin/false
>
>
> " | /usr/bin/mail -r postmaster@mydomain.ru -s "WARNING: quota on mail for ivanov" "ivanov@mydomain.ru"

Всё OK.

Ладно вам про новичков и ужасные скрипты, не глупее паровоза...

Вобщем оставил вариант Net::SMTP и плюнул на это дело.

Всем большое спасибо.
 

tux2002
() автор топика
Ответ на: комментарий от tux2002

Не понимаю:

CONSOLE=/dev/console
SHELL=/bin/sh
TERM=linux
USER=root
INIT_VERSION=sysvinit-2.86
PATH=/bin:/usr/bin:/sbin:/usr/sbin
RUNLEVEL=3
PWD=/root
PREVLEVEL=N
HOME=/root
SHLVL=4
BOOT_IMAGE=Slackware

tux2002
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.