2025
2024
2023
2022
2021
2020
2019
1月
2月
3月
4月
5月
6月
全2件 (2件中 1-2件目)
1
function cf_AlertSend{ ########################################################################## ## Local Variable ########################################################################## # cf_AlertSend実行時日時 local LCDATE_YMD="`date +%Y%m%d`" local LCDATE_HMS="`date +%H%M%S`" # 指定メッセージID未存在時メッセージID local NG_MSG_ID="ZE0102E" ########################################################################## ## Main ########################################################################## # Parameter Check if [ $# -eq 0 ]; then cf_MsgWrite ${C_BOTH_OUT} ${C_ERROR_LEVEL} \ "cf_AlertSendにメッセージIDが指定されていません。" return ${C_ERROR_RC} fi _alert_msg_id=${1} # 設定されていれば3番目の引数まで順次取得 shift 1 if [ ! -z "${1}" ]; then _alert_msg_str1="${1}" shift 1 if [ ! -z "${1}" ]; then _alert_msg_str2="${1}" shift 1 if [ ! -z "${1}" ]; then _alert_msg_str3="$*" fi fi fi # メッセージ定義ファイルの存在チェック if [ ! -f ${C_ALERT_MSG_FILE} ]; then cf_MsgWrite ${C_BOTH_OUT} ${C_ERROR_LEVEL} \ "メッセージ定義ファイル[${C_ALERT_MSG_FILE}]が見つかりません。" return ${C_ERROR_RC} fi # メッセージIDの存在チェック _flag_msgid=`awk '$1 !~ /^#/{ print $0; }' ${C_ALERT_MSG_FILE} |grep "${_alert_msg_id}" | wc -l` if [ ${_flag_msgid} -eq 0 ]; then # エラーメッセージ組み立て _alert_msg=`awk '$1 !~ /^#/{ print $0; }' ${C_ALERT_MSG_FILE} | grep "${NG_MSG_ID}" | ( read _a _b; echo ${_b}; )` _alert_msg=`echo "${_alert_msg}" | sed 's/$1/'"${_alert_msg_id}"'/g'` # loggerによるシステムログ出力 logger -p ${C_FACILITY}.${C_LOGLEVEL} "${_alert_msg_id} ${_alert_msg}" # シェルログ出力 cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "メッセージ定義ファイルにメッセージID[${_alert_msg_id}]が存在しません。" return ${C_ERROR_RC} fi # メッセージの組み立て _alert_msg=`awk '$1 !~ /^#/{ print $0; }' ${C_ALERT_MSG_FILE} | grep "${_alert_msg_id}" | ( read _a _b; echo ${_b}; )` # $1置換 _alert_msg=`echo "${_alert_msg}" | sed 's/$1/'"${_alert_msg_str1//\//\\/}"'/g'` # $2置換 _alert_msg=`echo "${_alert_msg}" | sed 's/$2/'"${_alert_msg_str2//\//\\/}"'/g'` # $3置換 _alert_msg=`echo "${_alert_msg}" | sed 's/$3/'"${_alert_msg_str3//\//\\/}"'/g'` # loggerによるシステムログ出力 logger -p ${C_FACILITY}.${C_LOGLEVEL} "${_alert_msg_id} ${_alert_msg}" # シェルログ出力 cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} \ "シスログ通知(${_alert_msg_id}:\"${_alert_msg_str1}\" \"${_alert_msg_str2}\" \"${_alert_msg_str3}\")" return ${C_NORMAL_RC}}################################################################################ 関数名 : cf_ProcChk## 引数 : ${1} チェックタイプ## : ${C_PROCCHK_NUM} プロセス数を標準出力## : ${C_PROCCHK_PID} プロセスIDリストを標準出力## : ${2}## : プロセス名を構成する任意の文字列(検索条件)※ ${3}以降にも複数指定可## 戻り値 : ${C_NORMAL_RC} 正常終了## : ${C_ERROR_RC} 異常終了## 処理概要 : ps -ef 結果を指定された文字列のAND条件で検索## : チェックタイプの指定が${C_PROCCHK_NUM}の場合## : 検索結果をプロセス数で標準出力に出力する。## : チェックタイプの指定が${C_PROCCHK_PID}の場合## : 検索結果を半角スペース区切りのプロセスIDリストで## : 標準出力に出力する。## 備考 : なし## : ##############################################################################function cf_ProcChk{ ########################################################################## ## Local Variable ########################################################################## # 稼動プロセス出力一時ファイル TMP_PLIST_FILE="${C_TMP_FILE}.plist" # ps -efコマンドのPIDのカラム位置 PID_POSITION=2 # grep除外条件 GREP_REJECT="grep -v \"grep\"" # Return Code _rc=${C_ERROR_RC} # フラグ変数 local _up_flg=0 local _down_flg=0 local _grep_str ########################################################################## ## Main ########################################################################## # Parameter Check _paramlist="$*" if [ $# -lt 2 ]; then cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "cf_ProcChkの記述に誤りがあります。(Parameter[${_paramlist}])" return ${_rc} fi _chk_type=${1} _proc_list_file=${2} # 引数1個毎にgrep条件をセット(grep keyword1 | grep keyword2..形式) shift 1 while [ $# -gt 0 ] do if [ -z "${_grep_str}" ]; then _grep_str="grep \"${1}\"" else _grep_str="${_grep_str} | grep \"${1}\"" fi shift 1 done # 処理条件出力 cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk Execute(Parameter[${_paramlist}])" cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk Execute(Type[${_chk_type}]Condition[${_grep_str}])" # Process List Create ps -ef | ${GREP_REJECT} > ${TMP_PLIST_FILE} 2>&1 cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk ***** All Process List Output *****" ls -l ${TMP_PLIST_FILE} >> ${C_LOG_FILE} 2>&1 cat ${TMP_PLIST_FILE} >> ${C_LOG_FILE} 2>&1 # Process Check Start case ${_chk_type} in # プロセス数 ${C_PROCCHK_NUM}) _chk_result=`cat ${TMP_PLIST_FILE} | eval ${_grep_str} | wc -l` echo "${_chk_result}" cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk Return(ProcessNum[${_chk_result}])" _rc=${C_NORMAL_RC} ;; # プロセスIDリスト ${C_PROCCHK_PID}) _chk_result=`cat ${TMP_PLIST_FILE} | eval ${_grep_str} | awk '{ print $'${PID_POSITION}'; }'` # Change '\n' to Space _chk_result=`printf "${_chk_result}" | tr -s '\n' ' '` echo "${_chk_result}" cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk Return(ProcessID[${_chk_result}])" _rc=${C_NORMAL_RC} ;; # チェックタイプ不正 *) cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "cf_ProcChkのチェックタイプに誤りがあります。(CheckType[${_chk_type}])" _rc=${C_ERROR_RC} ;; esac # チェック対象プロセスのgrep結果をロギング cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} "cf_ProcChk grep Command Result(${_grep_str})" cat ${TMP_PLIST_FILE} | eval ${_grep_str} >> ${C_LOG_FILE} 2>&1 # 終了処理 rm -f ${TMP_PLIST_FILE} return ${_rc} } ################################################################################ 関数名 : cf_GetSection## 引数 : ${1} 定義ファイル名## : ${2} セクション名## 戻り値 : ${C_NORMAL_RC} 正常終了## : ${C_ERROR_RC} 異常終了## 処理概要 : $1のファイルから$2で指定されたセクション部分を抽出し## : 標準出力に出力する。## 備考 : セクション名は"[","]"で囲まれていることを前提とし、## : セクションの終了は空行とする。## :##############################################################################function cf_GetSection(){ ########################################################################## ## Local Variable ########################################################################## # 対象定義ファイル TARGET_FILE=${1} # セクション名 TARGET_SECTION=${2} ########################################################################## ## Main ########################################################################## # 引数チェック if [ $# -ne 2 ] ;then cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "cf_GetSectionの記述に誤りがあります。(Parameter[$@])" return ${C_ERROR_RC} fi # 定義ファイル存在確認 if [ ! -f "${TARGET_FILE}" ] ;then cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "ファイル[${TARGET_FILE}]が見つかりません。" return ${C_ERROR_RC} fi # セクションチェック _grep_sec=`awk 'BEGIN { RS = ""; }; ($1 == "['${TARGET_SECTION}']"){ print $1; }' ${TARGET_FILE}` if [ -z "${_grep_sec}" ]; then cf_MsgWrite ${C_LOG_OUT} ${C_ERROR_LEVEL} \ "セクション[${TARGET_SECTION}]は定義されていません。" return ${C_ERROR_RC} fi # セクション部抽出(セクションタグ自体は除外) cf_MsgWrite ${C_LOG_OUT} ${C_INFO_LEVEL} \ "cf_GetSection Result(File[${TARGET_FILE}] Section[${TARGET_SECTION}])" awk '$1 !~ /^#/ { print $0; }' ${TARGET_FILE} |\ awk 'BEGIN { RS = ""; }; ($1 == "['${TARGET_SECTION}']"){ print $0; }' |\ grep -v "\[${TARGET_SECTION}\]" 2>&1 |tee -a ${C_SH_LOG_FILE} return ${C_NORMAL_RC}}################################################################################ End of Shell ##############################################################################
Sep 3, 2012
コメント(0)
#!/bin/bash################################################################################ ファイル名 : infra_common.sh## 機能名 : 共通環境変数・関数## 戻り値 : なし## 備考 : なし## ################################################################################ Ver 日付 名前 改訂内容## ---- ----------- -------------- ------------------------------------------## 1.0 2012/04/01 Initial Release## ---- ----------- -------------- ------------------------------------------###############################################################################----------------------------------------------# 汎用変数#----------------------------------------------# 起動年月日export C_EXEC_YMD=`date +"%Y%m%d"`export C_EXEC_YMD_FMT=`date +"%Y-%m-%d"`# 起動時刻export C_EXEC_HMS=`date +"%H%M%S"`export C_EXEC_HMS_FMT=`date +"%H:%M:%S"`# 自プロセスIDexport C_EXEC_PID=$$# 実行ユーザexport C_EXEC_USER=`id -un`# 実行Linuxサーバホスト名export C_EXEC_HOST_ORG=`hostname`# 実行Linuxサーバホスト名(小文字)export C_EXEC_HOST=`hostname | tr '[:upper:]' '[:lower:]'`# 実行シェルディレクトリexport C_BIN_DIR="/opt//scripts/bin"# 設定ファイルディレクトリexport C_CONF_DIR="/opt//scripts/etc"# ログファイルディレクトリexport C_LOG_DIR="/opt//scripts/log"# 一時ファイルディレクトリexport C_TMP_DIR="/opt//scripts/tmp"# バックアップディレクトリexport C_BACKUP_DIR="/Backsys"# 実行シェル名export C_EXEC_NAME=`basename $0`# 実行シェル名(フルパス)export C_EXEC_NAME_FULL=`which ${0}`# シェルログファイルif [ -z "${C_LOG_FILE}" ]; then export C_LOG_FILE="${C_LOG_DIR}/${C_EXEC_HOST}.${C_EXEC_NAME}.${C_EXEC_YMD}.log"fi# 一時ファイルexport C_TMP_FILE="${C_TMP_DIR}/${C_EXEC_HOST}.${C_EXEC_NAME}.${C_EXEC_YMD}${C_EXEC_HMS}.tmp.${C_EXEC_PID}"# リターンコード定数export C_NORMAL_RC=0 # 正常終了export C_WARNING_RC=10 # 警告終了export C_ERROR_RC=1 # 異常終了#----------------------------------------------# メッセージ出力関連変数#----------------------------------------------# メッセージ定義ファイルC_ALERT_MSG_FILE="${C_CONF_DIR}/infra_msg.txt"# システムログ出力(logger)時のファシリティ・メッセージレベルC_FACILITY="local1"C_LOGLEVEL="warn"# 画面・ログ出力の通知レベルexport C_INFO_LEVEL="I" # 通知レベルexport C_WARNING_LEVEL="W" # 警告レベルexport C_ERROR_LEVEL="E" # エラーレベル# 画面・ログ出力先指定定数export C_BOTH_OUT=1 # 標準出力+シェルログ出力export C_STD_OUT=2 # 標準出力export C_LOG_OUT=3 # シェルログ出力#----------------------------------------------# その他#----------------------------------------------# プロセスチェック処理指定定数export C_PROCCHK_NUM=1 # プロセス数を標準出力export C_PROCCHK_PID=2 # プロセスIDリストを標準出力export C_PROCCHK_LST_NUM_RET=3 # プロセス検索条件をリストから読込み、プロセス状態を出力export C_PROCCHK_LST_PID_RET=4 # プロセス検索条件をリストから読込み、PIDを出力################################################################################ 関数名 : cf_MsgWrite## 引数 : ${1} 出力先の指定## : ${C_BOTH_OUT} 標準出力+シェルログ出力## : ${C_STD_OUT} 標準出力## : ${C_LOG_OUT} シェルログ出力## : ${2} 画面・ログ出力のレベル指定## : ${C_INFO_LEVEL} 通知## : ${C_WARNING_LEVEL} 警告## : ${C_ERROR_LEVEL} エラー## : ${3}- 出力メッセージ(任意の文字列)## 戻り値 : ${C_NORMAL_RC} 正常終了## : ${C_ERROR_RC} 異常終了## 処理概要 : 出力先の指定が${C_BOTH_OUT}の場合## : 出力メッセージをレベル指定の情報と共に標準出力と${C_LOG_FILE}に出力する。## : 出力先の指定が${C_STD_OUT}の場合## : 出力メッセージをレベル指定の情報と共に標準出力に出力する。## : 出力先の指定が${C_LOG_OUT}の場合## : 出力メッセージをレベル指定の情報と共に${C_LOG_FILE}に出力する。##############################################################################function cf_MsgWrite{ ########################################################################## ## Local Variable ########################################################################## # cf_MsgWrite実行時日時 LCDATE_YMD=`date +"%Y-%m-%d"` LCDATE_HMS=`date +"%H:%M:%S"` ########################################################################## ## Main ########################################################################## # 想定外エラー _output_fmt_err=`\ printf "%s %s %-15s %-10s PID:%-8s [%s] cf_MsgWriteの記述に誤りがあります。(Parameter[%s])\n"\ "${LCDATE_YMD}" "${LCDATE_HMS}" "${C_EXEC_NAME}" "${C_EXEC_USER}" \ "${C_EXEC_PID}" "${C_ERROR_LEVEL}" "$*"` # Parameter Check if [ $# -lt 3 ]; then echo "${_output_fmt_err}" | tee -a ${C_LOG_FILE} 2>&1 return ${C_ERROR_RC} fi _output_type="${1}" _output_level="${2}" # 3個目以降を1文字列としてセット shift 2 _output_msg="$*" # Message Format - 標準出力 _output_fmt_std=`\ printf "%s %s %-15s %-10s [%s] %s\n" \ "${LCDATE_YMD}" "${LCDATE_HMS}" "${C_EXEC_NAME}" "${C_EXEC_USER}" \ "${_output_level}" "${_output_msg}"` # Message Format - シェルログ出力 _output_fmt_log=`\ printf "%s %s %-15s %-10s PID:%-8s [%s] %s\n" \ "${LCDATE_YMD}" "${LCDATE_HMS}" "${C_EXEC_NAME}" "${C_EXEC_USER}" \ "${C_EXEC_PID}" "${_output_level}" "${_output_msg}"` # 出力先指定毎に出力 case ${_output_type} in # 標準出力+シェルログ出力 ${C_BOTH_OUT}) echo "${_output_fmt_std}" 2>&1 echo "${_output_fmt_log}" >> ${C_LOG_FILE} 2>&1 ;; # 標準出力 ${C_STD_OUT}) echo "${_output_fmt_std}" 2>&1 ;; # シェルログ出力 ${C_LOG_OUT}) echo "${_output_fmt_log}" >> ${C_LOG_FILE} 2>&1 ;; # 出力先指定値外 *) echo "${_output_fmt_err}" | tee -a ${C_LOG_FILE} 2>&1 return ${C_ERROR_RC} esac return ${C_NORMAL_RC}}
Sep 3, 2012
コメント(0)
全2件 (2件中 1-2件目)
1
![]()

