Files
2026-05-19 11:30:21 +08:00

305 lines
7.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
#-------------------------------------------------
# 命令脚本
# @author lwt
#-------------------------------------------------
# 连接数据库
DOC[sql_start]="连接数据库 参数:数据库名称"
fun_sql_start(){
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
INFO "连接\e[92m${DB}\e[0;0m数据库"
start ${DB}
}
# 查看数据库
DOC[sql_all_data]="查看数据库"
fun_sql_all_data(){
INFO "查看ip:\e[92m${DB_HOST}\e[0;0m所有数据库..."
show_databases ${DB_HOST}
}
# 远程执行sql脚本
DOC[sql_update_sql]="远程执行sql脚本"
fun_sql_update_sql(){
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
FILE=${ROOT}/${SQL_GAME_UPDATE}
INFO "数据库::\e[92m${DB}\e[0;0m 执行sql脚本...${FILE}"
update_sql ${DB} ${FILE}
# cat /dev/null > ${FILE}
}
# 生成本地sql数据库
DOC[sql_local]="生成本地sql数据库"
fun_sql_local(){
FILE=${ROOT}/${SQL_GAME_INIT}
mysql -A -h ${DB_LOCAL_HOST} -u${DB_LOCAL_USE} -p${DB_LOCAL_PASS} -P${DB_LOCAL_PORT} -e "DROP DATABASE if exists ${DB_LOCAL_SERVER}; create database if not exists ${DB_LOCAL_SERVER};"
INFO "数据库::\e[92m${DB_LOCAL_HOST}\e[0;0m 生成本地sql数据库...${FILE}"
mysql -A -h ${DB_LOCAL_HOST} -u${DB_LOCAL_USE} -p${DB_LOCAL_PASS} -P${DB_LOCAL_PORT} -D ${DB_LOCAL_SERVER} < ${FILE}
}
# 查看服务器列表
DOC[sql_server]="查看服务器列表"
fun_sql_server(){
INFO "查看ip:\e[92m${DB_HOST}\e[0;0m所有服务器列表..."
show_server ${DB_HOST}
}
# 查看所有表
DOC[sql_all_table]="查看所有数据表"
fun_sql_all_table(){
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
INFO "查看所有\e[92m${DB}\e[0;0m数据表..."
TABLES=`show_tables ${DB}`
for TABLE in ${TABLES[*]}; do
NUM=`table_count ${DB} ${TABLE}`
FROMAT "\e[92m${TABLE}\e[0;0m count in \e[92m${NUM}\e[0;0m"
done
}
# 查看所有账号
DOC[sql_all_account]="查看所有账号 参数:服务器id"
fun_sql_all_account(){
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
is_exists_data ${DB}
INFO "查看所有\e[92m${DB}\e[0;0m中的所有账号..."
show_account ${DB}
}
# 清表结构
DOC[sql_del_table]="删除数据表 参数:表名 服务器id"
fun_sql_del_table(){
if [ "${1}" = "" ]; then
ERR "请选中要删除的表格"
exit 0
else
TABLE=$1
fi
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
is_exists_table ${DB} ${TABLE}
INFO "删除\e[92m${DB}\e[0;0m数据库的\e[92m${TABLE}\e[0;0m表格"
INFO "确定要删除(y/n):"
read IS
if [ ${IS} == y ]; then
drop_table ${DB} ${TABLE}
if [ $? -ne 0 ]; then
ERR "删除失败,请检查"
fi
INFO "删除完成"
else
INFO "取消删除"
fi
}
# 清档
DOC[sql_clear_db]="停服清档 参数:服务器id"
fun_sql_clear_db(){
is_exists_server_id
GAME_DB=`show_game_db ${SERVER_ID}`
LOG_DB=`show_log_db ${SERVER_ID}`
INFO "正在删除数据表\e[92m${GAME_DB}\e[0;0m"
INFO "正在删除日志表\e[92m${LOG_DB}\e[0;0m"
INFO "确定要清档(y/n):"
read IS
if [ "${IS}" == "y" ] || [ "${IS}" == "Y" ]; then
#关服
SERVER_NODE=`show_server_node ${SERVER_ID}`
fun_srv_stop ${SERVER_ID}
drop_login ${SERVER_ID}
drop_database ${GAME_DB}
drop_database ${LOG_DB}
rm -rf ${ROOT}/server/server/dets
INFO "清档完成"
else
INFO "取消清档"
fi
}
# 执行sql命令
DOC[sql_command]="执行sql命令 参数:服务器id sql命令"
fun_sql_command(){
if [ "$*" = "" ]; then
ERR "请输入命令"
exit 1
else
COMMAND=$*
fi
is_exists_server_id
DB_NAME=`show_game_db ${SERVER_ID}`
INFO "数据库\e[92m${DB_NAME}\e[0;0m执行\e[92m${COMMAND}\e[0;0m的命令"
command ${COMMAND}
}
# 查询表结构
DOC[sql_desc]="查询表结构 参数:表名 server_id"
fun_sql_desc(){
if [ "${1}" = "" ]; then
ERR "请输入要查询的表格"
exit 0
else
TABLE=$1
fi
is_exists_server_id
DB=`show_game_db ${SERVER_ID}`
INFO "查看\e[92m${DB}\e[0;0m数据库的\e[92m${TABLE}\e[0;0m表格结构"
is_exists_table ${DB} ${TABLE}
NUM=`table_count ${DB} ${TABLE}`
INFO "表格行数${NUM}"
desc ${DB} ${TABLE}
exit 0
}
# 判断表是否存在
is_exists_table(){
DB=$1
TABLE=$2
TABLES=`show_tables ${DB}`
if is_exist ${TABLE} ${TABLES}; then
return 0
else
ERR "要删除的${TABLE}表不存在"
INFO "是否查看所有表(y/n)"
read ALL
if [ "${ALL}" == "y" ] || [ "${ALL}" == "Y" ]; then
fun_sql_all_table
fi
exit 1
fi
}
# 判断数据表是否存在
is_exists_data(){
DB=$1
TABLES=`show_databases ${DB_HOST}`
if is_exist ${DB} ${TABLES}; then
return 0
else
ERR "查询的${DB}数据库不存在"
INFO "是否查看所有数据库(y/n)"
read ALL
if [ "${ALL}" == "y" ] || [ "${ALL}" == "Y" ]; then
fun_sql_all_data
fi
exit 1
fi
}
# 判断服务器是否存在
is_exists_server_id(){
TABLES=`show_server_id`
if is_exist ${SERVER_ID} ${TABLES}; then
return 0
else
ERR "要操作的(server_id = ${SERVER_ID})服务器不存在"
INFO "是否查看所服务器(y/n)"
read ALL
if [ "${ALL}" == "y" ] || [ "${ALL}" == "Y" ]; then
fun_sql_server
fi
exit 1
fi
}
#判断是否存在
is_exist(){
TYPE=$1
shift
# 将输入的参数转换为列表
TYPES=$@
for K in ${TYPES[*]}; do
if [[ "${TYPE}" == "${K}" ]]; then
return 0
fi
done
return 1
}
# 启动服务器
start(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1}
}
# 获取数据库
show_server(){
mysql -A -h ${1} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_SERVER} -e "select server_id,game_db,server_node,role_cnt from server_info;"
}
# 获取数据库
show_server_node(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_SERVER} -BNe "select server_node from server_info where server_id = ${1};"
}
# 获取数据库
show_server_id(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_SERVER} -BNe "select server_id from server_info;"
}
# 获取数据库
show_game_db(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_SERVER} -BNe "select game_db from server_info where server_id = ${1};"
}
# 获取数据库
show_log_db(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_SERVER} -BNe "select log_db from server_info where server_id = ${1};"
}
# 获取数据库
show_databases(){
mysql -A -h ${1} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -e "show databases"
}
# 获取所有表
show_tables(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} -BNe "show tables"
}
# 获取所有账号
show_account(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} -e "select role_id,role_name,fn_uid,level from role"
}
# 获取表数量
table_count(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} -NBe "select count(1) from ${2}"
}
# 查看表结构
desc(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} -e "desc ${2}"
}
# 执行命令
command(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${DB_NAME} -e "$*"
}
# 清除数据库
drop_database(){
mysql -A -h${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -e "DROP DATABASE ${1}"
}
# 清除表
drop_table(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} -e "drop table ${2}"
}
# 清除登录信息
drop_login(){
WERL_NUM=`ps_num ${WERL}`
${ERL} -noshell -name eval_server${WERL_NUM}@127.0.0.1 -setcookie ${DEF_COOKIE} -eval "rpc:call('${LOGIN_SERVER_NODE}', login_server_app, remove_server_data, [${1}])" -s c q
}
# 执行sql更新
update_sql(){
mysql -A -h ${DB_HOST} -u${DB_USE} -p${DB_PASS} -P${DB_PORT} -D ${1} < ${2}
}