Linux スクリプト メール通知 - git0331-lgtm/Knowledge GitHub Wiki

【概要】
1. msmtpパッケージ使用
2. メール送信時の認証(SMTPサーバ)にGoogleのAPIを使用
【前提条件】
1. バックアップ先フォルダへのアクセス権
2. /cifs が作成済み
3. インターネット接続
【機能】
1. バックアップ異常終了をメール通知
pg_dumpコマンド実行結果通知
異常終了時(※1) : 指定メールアドレスにメール通知あり
正常終了時(※2) : 指定メールアドレスにメール通知なし
(※1) pg_dumpコマンドのエラー出力ありの時
(※2) pg_dumpコマンドのエラー出力なしの時
2. バックアップコマンドの戻り値ファイル出力
pg_dumpコマンドの戻り値ファイルを指定フォルダに出力
異常終了時(※1) : ファイル出力あり
正常終了時(※2) : ファイル出力あり
(※1) pg_dumpコマンドの戻り値が0以外の時
(※2) pg_dumpコマンドの戻り値が0の時
戻り値ファイル出力時 の mountコマンド実行結果通知
異常終了時(※1) : 指定メールアドレスにメール通知あり
正常終了時(※2) : 指定メールアドレスにメール通知なし
(※1) mountコマンドの戻り値が0以外の時
(※2) mountコマンドの戻り値が0の時
【サーバ設定】
1. パッケージインストール
sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove
sudo apt install msmtp msmtp-mta
2. 設定ファイル作成
sudo vi /etc/msmtprc
↓をコピペ
# Set default values for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# gmail service
account gmail
host smtp.gmail.com
port 587
from [Gmailアドレス]
user [Gmailアドレス]
password [Gmailアプリパスワード]
# Set a default account
account default : gmail
3. 権限変更
sudo chown orca.orca /etc/msmtprc
sudo chmod 600 /etc/msmtprc
【スクリプト設定箇所】
1. pg_dumpメール監視(3-16行)
### pg_dumpメール監視 ###
declare -A MAIL=(
#0: 実行しない 1: 実行する
["Execute"]="1"
#宛先メールアドレス(ダンプエラー通知)
["To"]="" #通知受信メールアドレス
#変更不要
["Contents"]="/tmp/contents.txt" #送信内容
["List"]="/tmp/list.txt" #バックアップフォルダ内リスト
["DumpLog"]="/tmp/dump.log" #pg_dumpエラー出力先
)
2. バックアップ戻り値ファイル出力(18-41行目)
### バックアップ戻り値ファイル出力 ###
declare -A WINDOWS=(
#0: 実行しない 1: 実行する
["Execute"]="1"
#ファイル出力先
["DEVICES"]="-t cifs //192.168.5.40/result"
#宛先メールアドレス(マウントエラー通知)
["To"]="" #通知受信メールアドレス
#マウントオプション
#基本的に変更不要 (ファイル出力先をユーザ認証が必要なフォルダに指定する場合に変更)
#例 : NAS上のアクセス制限が有効なフォルダ・パスワード保護共有が有効なWindows端末等
["OPTION"]="-o username=ID,password=PASSWORD,gid=1000,uid=1000"
#変更不要
["FOLDER"]="/cifs" #マウントポイント
["RETVAL"]="0" #マウント戻り値の格納用
["DumpLog"]="/tmp/dumpReturnVal.log" #pg_dump戻り値出力先
)
3. バックアップ保存媒体・バックアップ対象・医療機関名・保存先の指定(42-103行目)
#バックアップ対象 0:ORCA 1:ORCA+REMORA+Dolphin
BACKUPTYPE="0"
#医療機関名
NAME=""
#バックアップ媒体 0:ローカル 1:外部記憶装置(HDD・USB等) 2:共有フォルダ
MEDIA="2"
if [ "$MEDIA" = "0" ] ; then
FOLDER="/home/orca"
COMENT_01="ローカル"
elif [ "$MEDIA" = "1" ] ; then
DEVICES="/dev/sdb"
FOLDER="/hdd"
COMENT_01="外部記憶装置"
elif [ "$MEDIA" = "2" ] ; then
#ファイル出力先
DEVICES=" -t cifs //192.168.5.40/ORCABackup"
#マウントポイント
FOLDER="/cifs"
#マウントオプション
#基本的に変更不要 (ファイル出力先をユーザ認証が必要なフォルダに指定する場合に変更)
#例 : NAS上のアクセス制限が有効なフォルダ・パスワード保護共有が有効なWindows端末等
OPTION=" -o username=ID,password=PASSWORD,gid=1000,uid=1000"
#コメント
COMENT_01="共有フォルダ"
fi
【メール送信テスト方法】
pg_dumpコマンドのエラー再現
ex. sudo -u orc pg_dump -Fc orca > /cifs/$NAME.dump 2> "${MAIL[DumpLog]}"
mountコマンドのエラー再現
ex. ["DEVICES"]="-t cifs //192.168.5.40/AAABBBCCC"
【動作確認】
Ubuntu20.04 確認済み
Ubuntu22.04 確認済み
【更新履歴】
廣海 2024/02/28 バックアック媒体にローカル選択時、cifsディレクトリの所有者が自動でorcaになるようコード追加(91-93行目)