graylogから受けたメールを元にzabbix senderを叩くシェルの改修

■ graylogから受けたメールからzabbix senderを叩くシェル改修

#!/bin/bash

# Graylogから受け取ったメールから、zabbix senderを叩く
MAIL_ORIGINAL="/test01/mail_original_$$.txt"
MAIL_NIHONGO="/test01/mail_nihongo_$$.txt"
FOR_ZABBIX_SENDER="/test01/test_mail03.txt"     # !!テスト用注意!!
DELIMITER_CUSTOMER="=_=_=_=_=_="
DELIMITER_ADMIN="-_-_-_-_-_-"

# メールを1行ずつ読み込み、test_mail01.txtに書き出す。test_mail02.txtに日本語化したものを書き出す
while read LINE
do
echo "$LINE" >> "$MAIL_ORIGINAL"
done
nkf -mQ "$MAIL_ORIGINAL" > "$MAIL_NIHONGO"

# 顧客用メール内容
# test_mail02.txtの、=_=_=_=_=_=の間に書かれた情報を取得する(改行が入ったまま)
MAIL2LINE1=`grep -na -E "^$DELIMITER_CUSTOMER" "$MAIL_NIHONGO" | sed -e 's/:.*//g'`
MAIL2LNUM1=`echo $MAIL2LINE1 | awk '{print $1}'`        #開始行
MAIL2LNUM2=`echo $MAIL2LINE1 | awk '{print $2}'`        #終了行
# test_mail02.txtから、開始行~終了行の内容を抜き出す
MAIL2INFO2=`sed -n "$MAIL2LNUM1","$MAIL2LNUM2"p "$MAIL_NIHONGO"`
echo "$MAIL2INFO2" > "$FOR_ZABBIX_SENDER"

# admin用メール内容
# test_mail02.txtの、-_-_-_-_-_-の間に書かれた情報を取得する
# 取得した値の改行を|に変換する
MAIL2INFO1=`cat "$MAIL_NIHONGO" | awk -v ORS='|' '1;END{printf"\n"}' | awk -F "$DELIMITER_ADMIN" '{print $2}' | sed -e s/^/"$DELIMITER_ADMIN"/g -e s/$/"$DELIMITER_ADMIN"/g`
echo "$MAIL2INFO1" >> "$FOR_ZABBIX_SENDER"

MAIL2INFO3=`cat "$FOR_ZABBIX_SENDER"`
zabbix_sender -z 127.0.0.1 -s 105graylog_Ubuntu -k zstestitem02 -o "$MAIL2INFO3"

rm "$MAIL_ORIGINAL" "$MAIL_NIHONGO"


■ 解説
ファイルパス、文字列等は変数へ格納
awk -F の後の値は変数として認識してほしいので、'ではなく"でくくっている
MAIL2LNUM1とMAIL2LNUM2は""でくくるとうまく動かなくなる