Perl sendmail 附加日志文件匹配日期格式

Perl sendmail 附加日志文件匹配日期格式

我想在 Perl 脚本中以附件形式发送符合日期格式的日志文件,例如 YYYY-MM-DD-*.log。在 BASH 中,可以通过以下方式轻松完成:

[ -f $DIR/explog/$(date "+%Y-%m-%d")-*-host1.log ] && mutt -s "subject here" \
-a $DIR/explog/$(date "+%Y-%m-%d")-*-host1.log [email protected] </dev/null

出于某种原因,我需要在 Perl 脚本中执行此操作。Perl 脚本的主要部分如下,我想在电子邮件中添加日志文件。有什么想法吗?

顺便说一句,这个 Perl 脚本被 BASH shell 脚本作为电子邮件警报调用,因此如果有任何方法可以将文件传递给 perl 脚本,例如/usr/bin/perl $DIR/emailAlert.pl 文件1.log 文件2.log可以达到目的。请指教,谢谢。

#!/usr/bin/perl -w

use MIME::Lite;

$msg = MIME::Lite->new( 
    From => 'sender\@example.com', 
    To => 'recipient\@example.com', 
    Subject => 'subject here', 
    Type => 'multipart/mixed'
); 

$msg->attach(
    Type    => "text/plain",
    Path    => $tmpMsg,
    Filename    => $tmpMsg,
    Disposition => "attachment"
);

$msg->send('smtp', 'mailserver.example.com', Timeout => 60);

答案1

您可以在和之类的语句中使用参数$log1 = $ARGV[0]$log2 = $ARGV[1]并在您的部分中分配它们$msg->attach。您可以像这样使用它:

    while (@ARGV) {  
        $msg->attach(  
            'Type' => 'text/plain',  
            'Path' => shift @ARGV
        );  
    }

相关内容