シェルスクリプト(sendmailコマンド)だけでメール送信

保守監視等で、よく利用するのだが毎回忘れるので備忘録的に。

CRONで毎日お昼の12時に実行するサンプル

0 12 * * * bash /path/to/dir/hogefuga_report.sh

sendmailコマンドを使用して、SQL(postgresql)を実行して結果をメール送信するスクリプトサンプル
hogefuga_report.sh

#!/bin/sh

#### 汎用メール送信スクリプト
export PATH=$PATH:/usr/sbin
export PGPASSWORD=naisyodayo

NOWDATE=`date '+%m月%d日 %R '`

HOGE_CNT=`psql -U postgres -d dev --tuples-only -c 'select count(*) as hoge_cnt from hogehoge_tbl'`
FUGA_CNT=`psql -U postgres -d dev --tuples-only -c 'select count(*) as fuga_cnt from fugafuga_tbl'`
HOGE_CNT=`echo ${HOGE_CNT} | tr -d " "`
FUGA_CNT=`echo ${FUGA_CNT} | tr -d " "`

MAIL_TO="hogeko@hoge.com.jp"
MAIL_CC="fugasuke@fuga.com.jp"
MAIL_BCC="pekeo@peke.com.jp"
MAIL_FROM="ore@oresama.com.jp"
SUBJECT="俺様のレポート"
DATA="俺様の反響結果は以下となる"

mail_send () {
cat << EOD | sendmail -t
From: ${MAIL_FROM}
To: ${MAIL_TO}
Cc: ${MAIL_CC}
Bcc: ${MAIL_BCC}
Subject: ${SUBJECT}
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"

俺様へ

今日(${NOWDATE})のレポートを送るのでよく見ること。

${DATA}

・ほげ数
${HOGE_CNT}

・フガ数
${FUGA_CNT}

以上

EOD
}

mail_send

exit 0

Comments are closed.