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は""でくくるとうまく動かなくなる