You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
5.4 KiB
225 lines
5.4 KiB
#!/bin/bash |
|
CONFIG_DIR="/etc/mc-cp/" |
|
FILE_CFG="${CONFIG_DIR}${1}.cfg" |
|
FILE_POWER="${CONFIG_DIR}${1}.power" |
|
DIR_OF_SCRIPT="/usr/bin/" |
|
|
|
RED='\033[0;31m' |
|
GREEN='\033[0;32m' |
|
YELLOW='\033[1;33m' |
|
NC='\033[0m' |
|
|
|
|
|
function find_screen { |
|
if screen -ls "$1" | grep -o "^\s*[0-9]*\.$1[ "$'\t'"](" --color=NEVER -m 1 | grep -oh "[0-9]*\.$1" --color=NEVER -m 1 -q >/dev/null; then |
|
screen -ls "$1" | grep -o "^\s*[0-9]*\.$1[ "$'\t'"](" --color=NEVER -m 1 | grep -oh "[0-9]*\.$1" --color=NEVER -m 1 2>/dev/null |
|
return 0 |
|
else |
|
echo "$1" |
|
return 1 |
|
fi |
|
} |
|
|
|
if [ $1 = "list" ] |
|
then |
|
i=0 |
|
for f in ${CONFIG_DIR}*.cfg |
|
do |
|
filename="${f##*/}" |
|
filenameWithoutExtension="${filename%.*}" |
|
if [ -w $f ] |
|
then |
|
stst="${GREEN}ACTION${NC}" |
|
else |
|
stst="${RED}NO ACTION${NC}" |
|
fi |
|
if [ -r $f ] |
|
then |
|
source $f |
|
if find_screen "${SCREEN_NAME}" >/dev/null; then |
|
hasscr="${YELLOW}RUN${NC}" |
|
else |
|
hasscr="${YELLOW}NO RUN${NC}" |
|
fi |
|
consl="${GREEN}CONSOLE${NC}" |
|
else |
|
hasscr="???" |
|
consl="${RED}NO CONSOLE${NC}" |
|
fi |
|
let "i=i+1" |
|
echo -e "${i}. ${YELLOW}$filenameWithoutExtension${NC} (${hasscr}) - ${stst} , ${consl}" |
|
done |
|
exit |
|
fi |
|
|
|
if [ $1 = "help" ] |
|
then |
|
echo -e "${RED}========= ${GREEN}Minecraft Server Control Panel (mc-cp) ${RED}=========" |
|
echo -e "${YELLOW}mc-cp NAME start ${GREEN}- start NAME server" |
|
echo -e "${YELLOW}mc-cp NAME stop ${GREEN}- stop NAME server" |
|
echo -e "${YELLOW}mc-cp NAME restart ${GREEN}- send server NAME comand stop and after run" |
|
echo -e "${YELLOW}mc-cp NAME send COMAND ${GREEN}- send server NAME comand - COMAND" |
|
echo -e "${YELLOW}mc-cp list ${GREEN}- list all register servers,status & permissions current user SSH" |
|
echo -e "${YELLOW}mc-cp NAME new-config ${GREEN}- start master create new server with NAME" |
|
echo -e "${YELLOW}mc-cp NAME view-config ${GREEN}- show all config file NAME server" |
|
echo -e "${YELLOW}mc-cp NAME remove-config ${GREEN}- stop NAME server and remove his config" |
|
echo -e "${YELLOW}mc-cp NAME console ${GREEN}- open console screen select server NAME" |
|
echo -e "${YELLOW}mc-cp NAME run ${GREEN}- start server NAME with not auto run after down" |
|
echo -e "${RED}============== ${GREEN}by Misterzym for up-world.ru ${RED}=============${NC}" |
|
exit |
|
fi |
|
|
|
if [ "$#" -lt 2 ]; then |
|
echo -e "${RED}What are you doing?! Parametrs wrong!${NC}" |
|
exit |
|
fi |
|
|
|
if [ $2 = "new-config" ] |
|
then |
|
echo "Server dir:" |
|
read Dirs |
|
echo "Server jar file name:" |
|
read Jar |
|
echo "How much memory size server (GB):" |
|
read Memory |
|
|
|
echo "#!/bin/bash" > ${FILE_CFG} |
|
echo "SCREEN_NAME=\"${1}\"" >> ${FILE_CFG} |
|
echo "SERVER_DIR=\"$Dirs\"" >> ${FILE_CFG} |
|
echo "SERVER_JAR=\"$Jar\"" >> ${FILE_CFG} |
|
echo "SERVER_MEM=\"${Memory}G\"" >> ${FILE_CFG} |
|
|
|
echo 'STOPING_SERVER="0"' >> ${FILE_CFG} |
|
echo 'echo "0" > "${CONFIG_DIR}${1}.power"' >> ${FILE_CFG} |
|
chmod 666 ${FILE_CFG} |
|
echo "0" > ${FILE_POWER} |
|
chmod 666 ${FILE_POWER} |
|
exit |
|
fi |
|
|
|
|
|
|
|
if [ -f ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Find configuration file ${1}${NC}" |
|
else |
|
echo -e "${RED}Cant find configuration file ${1}${NC}" |
|
exit |
|
fi |
|
|
|
if [ $2 = "view-config" ] |
|
then |
|
if [ -r ${FILE_CFG} ] |
|
then |
|
source ${FILE_CFG} |
|
echo -e "Server dir: ${YELLOW}${SERVER_DIR}${NC}" |
|
echo -e "Server jar file: ${YELLOW}${SERVER_JAR}${NC}" |
|
echo -e "Memory size server: ${YELLOW}${SERVER_MEM}B${NC}" |
|
else |
|
echo -e "${RED}Not permission${NC}" |
|
fi |
|
exit |
|
fi |
|
|
|
if [ $2 = "remove-config" ] |
|
then |
|
if [ -w ${FILE_CFG} ] |
|
then |
|
rm ${FILE_CFG} |
|
rm ${FILE_POWER} |
|
echo -e "${GREEN}Remove config success${NC}" |
|
else |
|
echo -e "${RED}Remove config access${NC}" |
|
fi |
|
exit |
|
fi |
|
|
|
|
|
|
|
if [ $2 = "start" ] |
|
then |
|
if [ -w ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Server ${YELLOW}${SCREEN_NAME}${GREEN} has been started${NC}" |
|
else |
|
echo -e "${RED}Not Permission ${1}${NC}" |
|
exit |
|
fi |
|
source ${FILE_CFG} |
|
screen -S "${SCREEN_NAME}" -X kill >/dev/null 2>&1 |
|
screen -S "${SCREEN_NAME}" -d -m |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $"cd ${SERVER_DIR}" |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $'\r' |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $"${DIR_OF_SCRIPT}mc-cp ${1} run" |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $'\r' |
|
fi |
|
|
|
if [ $2 = "restart" ] |
|
then |
|
if [ -w ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Server ${YELLOW}${SCREEN_NAME}${GREEN} has been restarted${NC}" |
|
else |
|
echo -e "${RED}Not Permission ${1}${NC}" |
|
exit |
|
fi |
|
source ${FILE_CFG} |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $'stop\r' |
|
fi |
|
|
|
if [ $2 = "stop" ] |
|
then |
|
if [ -w ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Server ${YELLOW}${1}${GREEN} has been stoped${NC}" |
|
else |
|
echo -e "${RED}Not Permission ${1}${NC}" |
|
exit |
|
fi |
|
source ${FILE_CFG} |
|
echo "1" > "${FILE_POWER}" |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $'stop\r' |
|
fi |
|
|
|
if [ $2 = "send" ] |
|
then |
|
if [ -w ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Server ${YELLOW}${1}${GREEN} send msg ${YELLOW}${3} ${NC}" |
|
else |
|
echo -e "${RED}Not Permission ${1}${NC}" |
|
exit |
|
fi |
|
source ${FILE_CFG} |
|
screen -S "${SCREEN_NAME}" -X -p 0 stuff $"$3\r" |
|
fi |
|
|
|
if [ $2 = "console" ] |
|
then |
|
if [ -r ${FILE_CFG} ] |
|
then |
|
echo -e "${GREEN}Open console ${1}${NC}" |
|
else |
|
echo -e "${RED}No Permission ${1}${NC}" |
|
exit |
|
fi |
|
source ${FILE_CFG} |
|
screen -x -D "$SCREEN_NAME" |
|
fi |
|
|
|
if [ $2 = "run" ] |
|
then |
|
source ${FILE_CFG} |
|
while true |
|
do |
|
|
|
if [ $STOPING_SERVER = "1" ] |
|
then |
|
break |
|
fi |
|
|
|
cd ${SERVER_DIR} |
|
java -Xms${SERVER_MEM} -Xmx${SERVER_MEM} -XX:hashCode=5 -Dfile.encoding=UTF-8 -jar ${SERVER_JAR} --log-strip-color |
|
read STOPING_SERVER < "${CONFIG_DIR}${1}.power" |
|
done |
|
fi
|
|
|