commit 86e556550b2442cc2772979be5977adb7fe3a1d1 Author: Artem Shkilev Date: Fri Sep 8 00:55:02 2023 +0300 init diff --git a/mc-cp b/mc-cp new file mode 100644 index 0000000..4346b7f --- /dev/null +++ b/mc-cp @@ -0,0 +1,225 @@ +#!/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 diff --git a/miniservtest.cfg b/miniservtest.cfg new file mode 100644 index 0000000..9f5987c --- /dev/null +++ b/miniservtest.cfg @@ -0,0 +1,7 @@ +#!/bin/bash +SCREEN_NAME="miniservtest" +SERVER_DIR="/mini-games/test/" +SERVER_JAR="server.jar" +SERVER_MEM="2G" +STOPING_SERVER="0" +echo "0" > "${CONFIG_DIR}${1}.power" diff --git a/miniservtest.power b/miniservtest.power new file mode 100644 index 0000000..573541a --- /dev/null +++ b/miniservtest.power @@ -0,0 +1 @@ +0 diff --git a/monitor.sh b/monitor.sh new file mode 100644 index 0000000..2970a83 --- /dev/null +++ b/monitor.sh @@ -0,0 +1,24 @@ +#! /bin/bash +echo "OS Type:" $(uname -o) +echo "|" +echo "OS Name:" $(cat /etc/os-release | grep ^VERSION= | cut -f2 -d\") +echo "|" +echo "OS Version:" $(cat /etc/os-release | grep ^NAME= | cut -f2 -d\") +echo "|" +echo "Architecture:" $(uname -m) +echo "|" +echo "Kernel Release:" $(uname -r) +echo "|" +echo "Load Average: $(cat /proc/loadavg | cut -f 1-3 -d ' ')" +echo "|" +echo "System Uptime:" $(uptime -p | cut -f 2- -d " ") +echo "|" +echo "Hostname:" $HOSTNAME +echo "|" +echo "External IP:" $(wget http://ipinfo.io/ip -qO -) +echo "|" +echo -e "Logged In users:\n$(who)" +echo "|" +echo -e "Memory Usages(Mo):\n$(free -m | grep -v +)" +echo "|" +echo -e "Disk Usages:\n$(df -h| grep '/dev/md2')"