|
カテゴリ:カテゴリ未分類
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 07:01:31 AM
コメント(0) | コメントを書く 当サイトで利用している画像及びデータは、下記の団体に帰属します。
許可無くご利用又は転用になられる事は出来ませんので、予めご了承下さい。 RED STONE C)2004 L&K LOGIC KOREA CORPORATION. All Rights Reserved (C)2004 GameOn Co., Ltd CABAL ONLINE ©2006 by ESTsoft Corp. All rights reserved. ©2006 Gamepot Inc., All rights reserved. PERWECT WORLD 完美世界 Copyright (C) 2006-2007 C&C Media Co.,Ltd. All Rights Reserved. (C) 北京完美時空網絡技術有限公司 ALL RIGHTS RESERVED. 【毎日開催】
15記事にいいね!で1ポイント
エラーにより、アクションを達成できませんでした。下記より再度ログインの上、改めてミッションに参加してください。
x
|