023655 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

天城さん三日坊主日記

天城さん三日坊主日記

PR

キーワードサーチ

▼キーワード検索

プロフィール

☆天城☆

☆天城☆

カレンダー

お気に入りブログ

まだ登録されていません

コメント新着

海のくまさん@ チン型取られちゃったw http://onaona.mogmog55.net/21l21yy/ 俺…
らめ仙人@ 初セッ○ス大成功!! 例のミドリさん、初めて会ったのに、僕の…
リナ@ 今日は苺ぱんちゅ http://kuri.backblack.net/kg8dvf8/ 今…
まさーしー@ なんぞコレなんぞぉ!! ぬオォォーーー!! w(゜д゜;w(゜д゜)w…
ダル伊藤@ ズ ル ム ケ自慢の奴涙目w 包.茎の方がピストンしてる時に、皮がこ…

フリーページ

Sep 3, 2012
XML
カテゴリ:カテゴリ未分類

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ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X