loopixのゲーム開発

ゲーム開発初心者が最初から一歩ずつゲーム開発していきます。環境作りからプログラム・サーバ構築までさまざまな内容を書くと思います。
皆さんにも参考になれば幸いです。
よろしくお願いいたします。

メモ

久しぶりに投稿


最近、web漫画かいたりとふらふらしてる・・・


サーバのチェックを自動化するためのスクリプトを作成してましたー

んで、そのメモです。

まだ完成してないんだけどね。


create_servercheck.sh


#!/bin/sh
#
# コンテンツ毎のサーバチェック用自動チェックスクリプトを生成する。
# Edittor :
#


SERVERCHECKHOME=/home/ec2-user/servercheck/
COMMONDIR=/home/ec2-user/servercheck/common/
CID=
SPEC=
ROLE=
V10_CHECK=FALSE
V20_CHECK=FALSE
V40_CHECK=FALSE
V80_CHECK=FALSE
V160_CHECK=FALSE
V240_CHECK=FALSE
Z240_CHECK=FALSE



function usage {
cat <
$(basename ${0}) is a tool for creating auto check scripts by content.



Usage:
$(basename ${0}) [command] []


Options:
-c [Content ID : ex. aaa~zzz]
-v [SPEC : v10/v20/v40/v80/v160/v240/z240]
-r [ROLE : /vir/phy/apache/mysql/memcached/kt/redis


Example:
sh $(basename ${0}) -c atl -v v10 -r apache


EOF
}


# 引数の数が合わなかったらエラー
if [ $# -ne 6 ] ; then
usage
exit 1
fi


# 引数セット
while getopts c:v:r: OPT
do
case $OPT in
"c" ) CID="$OPTARG" ;;
"v" ) SPEC="$OPTARG" ;;
"r" ) ROLE="$OPTARG" ;;
esac
done


# CIDの命名規則に反していたらエラー
if [ -z "`echo $CID | egrep "^[a-z]{3}$"`" ] ; then
echo "[ERROR] : CID must be [aaa-zzz]"
exit 1
fi


# 対象のSPECがない場合はエラー
case $SPEC in
"v10" ) V10_CHECK=TRUE ;;
"v20" ) V20_CHECK=TRUE ;;
"v40" ) V40_CHECK=TRUE ;;
"v80" ) V80_CHECK=TRUE ;;
"v160" ) V160_CHECK=TRUE ;;
"v240" ) V240_CHECK=TRUE ;;
"z240" ) Z240_CHECK=TRUE ;;
* ) echo "[ERROR] : $SPEC spec is not found."
exit 1 ;;
esac


# 対象のROLEがない場合はエラー
case $ROLE in
"vir" ) VIR_CHECK=TRUE ;;
"phy" ) PHY_CHECK=TRUE ;;
"apache" ) APACHE_CHECK=TRUE ;;
"mysql" ) MYSQL_CHECK=TRUE ;;
"memcached" ) MEMCACHED_CHECK=TRUE ;;
"kt" ) KT_CHECK=TRUE ;;
"redis" ) REDIS_CHECK=TRUE ;;
* ) echo "[ERROR] : $ROLE is not found."
exit 1 ;;
esac


# コンテンツ用ディレクトリが作成されていなかったら作成する。
if [ -e $SERVERCHECKHOME/$CID ] ; then
mkdir $SERVERCHECKHOME/$CID
if [ $? -eq 0 ] ; then
echo "Creating Directory $CID."
else
echo "[ERROR] : Don't create Directory."
exit 1
fi
fi




server_check.sh


#!/bin/sh
#
# servercheck のテンプレート
# edit by
#
#


HOSTFILE=/etc/hosts
CID=%CID%
CONFFILE=/home/ec2-user/servercheck/%CID%/%CID%.conf
CHECKFILE=/home/ec2-user/servercheck/%CID%/bin/virtual_check



if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` [cid]"
fi


array=("# start array")


while read line
do
array+=("$line")
done < $CONFFILE


hostarray=("# start hostarray")
midwarearray=("#start midwarearray")


### conffileのhost,middle,attrを配列に入れる。
for i in "${array[@]}"
do


if [[ `echo "$i" | grep -v "^\s*#"` ]] ; then
hostarray+=("`echo "$i" | awk '{print $1,$2,$3}'`")


fi
done



for i in "${hostarray[@]}"
do
if [[ `echo "$i" | grep -v "^\s*#"` ]] ; then
echo $i
fi
done
###


### conffileのhostにひもづくIPアドレスを調べる。
iparray=("# start iparray")


###
while read line
do
cidhost=`echo $line | awk '{print $2}'`
for i in "${hostarray[@]}"
do
grephost=`echo $i | awk '{print $1}'`
middle=`echo $i | awk '{print $2}'`
attr=`echo $i | awk '{print $3}'`
if [[ `echo "$cidhost" | egrep "$grephost"` ]] ; then
iparray+=("`echo "$line" | awk '{print $1}' ; printf "$cidhost $middle $attr"`")
fi
done
done < $HOSTFILE



### チェック
while read shells
do
shell=`echo "$shells" | awk -F "->" '{print $1}'`
ans=`echo "$shells" | awk -F "->" '{print $2}'`
echo -e "\e[33m\e[40mCommand : $shell \e[0m"
for i in "${iparray[@]}"
do
if [[ `echo "$i" | grep -v "^\s*#"` && `echo "$i" | grep -i "vir"` ]] ; then
host=`echo $i | awk '{print $2}'`
if [[ `ssh -n $host "$shell" | grep $ans` ]] ; then
echo -ne "\e[33m\e[44m$host :\e[40m\e[32m" ; ssh -n $host "$shell"
echo -ne "\e[0m"
else
echo -ne "\e[33m\e[44m$host :\e[40m\e[31m" ; ssh -n $host "$shell" ; echo -e "Not equal $ans"
echo -ne "\e[0m"
fi
fi
done
sleep 1
done < $CHECKFILE
wait



[ec2-user@xxxxx bin]$ cat virtual_check
cat /etc/redhat-release->7.1
grep nameserver /etc/resolv.conf->172.31.0.2