« 耳より情報: Arcserve High Availability フルシステム シナリオについて ~ 仮想環境/クラウド環境への移行ツール、DR/BCP対策として活用できます!! | トップページ | 導入事例:Arcserve UDP とクラウド ストレージ ゲートウェイの連携 »

2020年3月24日 (火)

Arcserve UDP Linux エージェントでバックアップの成功/失敗をメール通知するスクリプトを書いてみた

前回の記事で Linux の電子メール環境を作ったので、ついでにバックアップの成否をメールで知らせるスクリプトもつくりました。よければ使ってやってください。

00_email_notification  

 

■ バックアップ完了後にメールを送るスクリプト

Arcserve UDP の Linux Agent では、ジョブやスナップショット取得の前後にスクリプトを実行できます。このスクリプトは Linux バックアップ サーバの以下のフォルダに保存します。

/opt/Arcserve/d2dserver/usr/prepost

 

という事で、スクリプト保存フォルダに移動して、vi エディタでシェル スクリプトを作成します。スクリプトの名前は適当です。

# cd /opt/Arcserve/d2dserver/usr/prepost
# vi backup_result.sh

 

以下、スクリプトの内容です。

01: #!/bin/sh
02: if test "${D2D_JOBRESULT}" = "success"
03: then
04: Result="成功"
05: else
06: Result="失敗"
07: fi
08:
09: Body=" ${D2D_TARGETNODE} のバックアップが$Resultしました。\n ジョブID:${D2D_JOBID}"
10: Subject="$Result:${D2D_TARGETNODE} のバックアップ"
11: EmailFrom="<差出人メールアドレス>"
12: EmailTo="<宛先メールアドレス>"
13:
14: export HOME=/root
15: export LD_LIBRARY_PATH=/lib64
16: openssl rsautl -decrypt -inkey ~/private-key.pem -in ~/.mailrc.enc -out ~/.mailrc
17: echo -e "$Body" | mail -s "$Subject" -r $EmailFrom $EmailTo
18: rm -f ~/.mailrc

${D2D_JOBRESULT} はジョブの終了後に渡される環境変数で、これでジョブの成功/失敗を判定します。${D2D_TARGETNODE} はバックアップ対象のノードで、メールのタイトルと本文中に入れてどのノードの通知なのか分かるようにしています。(※1

11 行目と 12 行目のメール アドレスには実際の電子メールアドレスを入れます。

14 行目では、メール設定ファイル .mailrc に確実にアクセスできるようにするため、root アカウントのホーム ディレクトリのパスを設定しています。15 行目も同様にライブラリのパスを指定しています。

16 行目と 18 行目のコマンドは後で説明します。 設定ファイルの暗号化に関わるもので、SMTP 認証を使わないのであれば削除します。

ファイルを保存したら、アクセス権を変更するのも忘れずに。

# chmod 755 /opt/Arcserve/d2dserver/usr/prepost/backup_result.sh

 

■ メールの基本設定

メールを送信するにはメール サーバの設定などが必要です。Mail コマンドがインストールされていない環境では、以下のコマンドでインストールします。

# yum install mailx

 

ホームディレクトリに移動し、.mailrc ファイルを編集します。

# cd
# vi .mailrc

 

.mailrc ファイルにメール サーバの設定を記入します。以下設定例です。サーバ名やポート番号などを実際の環境に合わせて入力します。今回は使っていませんが、必要に応じて SSL や STARTTLS の設定も追加します。SMTP 認証を使わない場合は2行目以降は不要です。

01: set smtp=smtp://<SMTPサーバ名>:<ポート番号>
02: set smtp-auth=login
03: set smtp-auth-user=<ユーザ名>
04: set smtp-auth-password=<パスワード>

 

■ .mailrc ファイルの暗号化

ここまでの設定でもメールは飛びますが、SMTP 認証のパスワードが平文で保存されるのが気に入りません。ここから先、openssl コマンドを使って .mailrc ファイルを暗号化していきます。

暗号化キーを作成します。

# openssl genrsa > ~/private-key.pem

 

ここで作ったキーを使って .mailrc ファイルを暗号化します。

# openssl rsautl -encrypt -inkey ~/private-key.pem -in ~/.mailrc -out ~/.mailrc.enc

 

復号コマンドはこちら。これを先ほど作った backup_result.sh に追加して、メールを送る前に .mailrc ファイルが平文に戻るようにします。

openssl rsautl -decrypt -inkey ~/private-key.pem -in ~/.mailrc.enc -out ~/.mailrc

 

平文になった .mailrc をそのままにしておくと暗号化した意味がないので、メール送信後に削除させます。backup_result.sh の最後に以下を追加します。

rm -f ~/.mailrc

 

■ 実行後スクリプトの設定

Arcserve UDP の Web UI にログインし、冒頭で作ったスクリプトがバックアップ完了後に実行されるように設定します。

対象のジョブを [変更] で開き、[拡張] タブの下の方に行くと、スクリプトを選択できます。今回は [ジョブの完了後] の中から選択し、[次へ] をクリックしてジョブをサブミットします。

01_pre_post_script

 

あとは、バックアップが実行されるのを待つだけ。ちゃんと成功も失敗も通知されました。やっほう!

02_sucess

03_fail  

 

以上、ホテがお伝えしました。

 

<関連記事>

Arcserve UDP Linux エージェントで実行前/後スクリプトを使いたい

Arcserve UDP:一通のメールで全台のバックアップ状況をチェックできる ~ レポートのメール送信

Arcserve UDP:バックアップが失敗する前に容量不足を知らせてほしい!(Linux Agent 編)

Arcserve UDP:Linux サーバのみの環境でバックアップをコマンド実行する方法

 


※1 これ以外にも環境変数が多数あり、以下のマニュアルの中で紹介されています。
自動化用の実行前/実行後スクリプトの管理

« 耳より情報: Arcserve High Availability フルシステム シナリオについて ~ 仮想環境/クラウド環境への移行ツール、DR/BCP対策として活用できます!! | トップページ | 導入事例:Arcserve UDP とクラウド ストレージ ゲートウェイの連携 »

技術情報」カテゴリの記事

Arcserve UDP」カテゴリの記事

コメント

貴重な情報をありがとうございました。
スクリプト内容の success のスペルが間違えていましたので修正
したところ正常に結果を表示できるようになりました。
今後訪れる方の参考になれば幸いです。

仲田様

コメントいただきましてありがとうございます!
これは申し訳ございません……

早速修正いたしました。
ご指摘いただきありがとうございました!!

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 耳より情報: Arcserve High Availability フルシステム シナリオについて ~ 仮想環境/クラウド環境への移行ツール、DR/BCP対策として活用できます!! | トップページ | 導入事例:Arcserve UDP とクラウド ストレージ ゲートウェイの連携 »