![Perl sendmail 附加日志文件匹配日期格式](https://linux22.com/image/580164/Perl%20sendmail%20%E9%99%84%E5%8A%A0%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%8C%B9%E9%85%8D%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F.png)
我想在 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
);
}