2016-04-02 26 views
1

私はHadoop(CDH 5.4.8)を使用して非構造化データを処理しています。処理が正常に終了したらログファイルを添付して関係するチームにメール通知を送信します。添付ファイルとしてログファイルを添付した電子メールを送信

CDH 5.4.8 Oozieは電子メールアクションの添付ファイル機能をサポートしていません。だから私はシェルスクリプトを使ってこれをしたい。これを行う最善の方法を教えてください。

答えて

0

完全なメールメッセージ(ヘッダーと本文)をsendmailにパイプすることで、シェル内から簡単に電子メールを送信できます。これは、メール転送エージェント(例:sendmailまたは接尾辞)を使用してホストがメールメッセージを送信するように正しく設定されていることを前提としています。

添付ファイル付きの電子メールを送信する最も簡単な方法は、お使いのメールユーザエージェント(例えばサンダーバード)で単純なテンプレートメッセージを作成することで、ソースの表示コマンドを使用して、テンプレートとしてその内容をコピーします。必要に応じてそのテンプレートを変更し、シェルスクリプトに配置します。ここで

は一例です:

 
#!/bin/sh 
cat <<\EOF | 
To: Ramesh <[email protected]> 
From: Diomidis Spinellis <[email protected]> 
Subject: Here are your Hadoop results 
Message-ID: <[email protected]> 
Date: Sun, 3 Apr 2016 09:58:48 +0300 
MIME-Version: 1.0 
Content-Type: multipart/mixed; 
boundary="------------030303090406090809090501" 

This is a multi-part message in MIME format. 
--------------030303090406090809090501 
Content-Type: text/plain; charset=utf-8; format=flowed 
Content-Transfer-Encoding: 7bit 

The attachment contains your Hadoop results. 


--------------030303090406090809090501 
Content-Type: application/octet-stream; 
name="data" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename="data" 

HviDNR105+2Tr0+0fsx3OyzNueQqPuAXl9IUrafOi7Y= 
--------------030303090406090809090501-- 
EOF 
sendmail [email protected] 

あなたがそれらを生成するコマンドを修正したい部品を交換、実際のデータとの固定メッセージを設定します。 (ここから欠落しているバックスラッシュを注意EOFマーカーを文書化する。)

 
#!/bin/sh 
cat <<EOF | 
To: Ramesh <[email protected]> 
From: Diomidis Spinellis <[email protected]> 
Subject: Here are your Hadoop results 
Message-ID: <[email protected]> 
Date: $(date -R) 
MIME-Version: 1.0 
Content-Type: multipart/mixed; 
boundary="------------030303090406090809090501" 

This is a multi-part message in MIME format. 
--------------030303090406090809090501 
Content-Type: text/plain; charset=utf-8; format=flowed 
Content-Transfer-Encoding: 7bit 

The attachment contains your Hadoop results. 


--------------030303090406090809090501 
Content-Type: application/octet-stream; 
name="data" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename="data" 

$(base64 binary-data-file.dat) 
--------------030303090406090809090501-- 
EOF 
sendmail [email protected] 
+0

おかげDiomidis、ローカルモードでその作業罰金を。今度はOozieのシェルアクションでテストしたいと思います。 –

+0

"exmaple.csv"という名前のファイルがある場合。私はname = "exmaple.csv"とfilename = "exmaple.csv"の両方にその名前を入れる必要がありますか?または「データ」に何を書き込むべきか。また、xlsxファイルを送信しようとしている場合は、Content-Typeなどのパラメータをどのように変更する必要がありますか。私は本当にあなたがこれに関するより多くの情報とリンクを共有することができれば感謝します。ありがとう –

+0

私はあなたの電子メールクライアントを通して添付ファイルを送ってから、メッセージソースコードを調べることをお勧めします。 –

関連する問題