Bash

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

  • March 30, 2012

我想發送匹配日期格式的日誌文件,例如 YYYY-MM-DD-*.log 作為 Perl 腳本中的附件。在 BASH 中,這可以通過以下方式輕鬆完成:

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

出於某種原因,我需要在 Perl 腳本中執行此操作。Perl 腳本的主要部分如下,我想在電子郵件中添加日誌文件。任何的想法?

順便說一句,這個 Perl 腳本被稱為來自 BASH shell 腳本的電子郵件警報,所以如果有任何方法可以將文件傳遞給 perl 腳本,例如*/usr/bin/perl $DIR/emailAlert.pl file1.log file2.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);

$log1 = $ARGV[0]您可以在諸如和之類的語句中使用參數,並在您的部分$log2 = $ARGV[1]中分配它們。$msg->attach你可以像這樣使用它:

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

引用自:https://serverfault.com/questions/375168