Синхронизация команд между серверами майнкрафт

Скрипт Синхронизация команд между серверами майнкрафт 2.0

Создайте и подтвердите аккаунт для скачивания
Думаю все кто использует BungeeCord сталкивались с проблемой синхронизация команд между серверами, да можно использовать плагин CommandSync но у меня например он сначала работает нормально но через некоторое время когда мне нужно перезагрузить какой то сервер из за CommandSync сервер не запускается и надо перезагружать BungeeCord сервер что все заработало. Именно из за этой проблемы я решил написать этот скрип так как альтернатив плагину CommandSync не нашел.
Скрипт предназначен для серверов работающих на Linux и для тех кто использует утилиту tmux/screen для запука серверов в отдельной сессии. Если вы не используете утилиту tmux/screen скрипт у вас не будет работать, чтоб узнать как установить и настроить утилиту tmux/screen для своего сервера перейдите по этой ссылке You must be logged in to see this link.
Если у вас сервера на нескольких хостингах вы можыте настроить отправку команд по SSH
Для этого вам надо открыть скрипт cmd в блокноте и следовать инструкции описанной в скрипте.​
JavaScript:
#! /bin/sh
comands=`until [ -z "$2" ]; do echo -n "$2 " ; shift; done`
server=`echo -n $1 | sed 's/,/ /g'`

tmux_console ()
{
    serverall=`tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}'`

    if [ $server = all ] > /dev/null 2>&1
    then
        for servers in $serverall
        do
            tmux send-keys -t $servers "$comands" Enter
# Чтоб включить синхронизацию по SSH необходимо розкоментировать фунцию ниже и заменить "пользователь, пароль и ип" на ваши данные.    
# Если у вас несколько хостингов эту фунцию можно копировать и вставить неограниченное количество раз только подставлять свои данные.
# И предварительно установить утилиту sshpass (apt-get install sshpass -y / yum install sshpass -y).
# Также нужно закинуть скрипт cmd в домашний каталог пользователя на SSH сервере например если root (/root), если user (/home/user)
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
        done
    elif [ $server = shell ] > /dev/null 2>&1
    then
        $comands
    else
        for servers in $server
        do
            tmux send-keys -t $servers "$comands" Enter
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
        done
    fi
}
screen_console ()
{
    serverall=`screen -list | awk '{print substr($1, 0, length($1)-0)}'`

    if [ $server = all ] > /dev/null 2>&1
    then
        for servers in $serverall
        do
            screen -p 0 -S $servers -X stuff "$comands^m"
# Чтоб включить синхронизацию по SSH необходимо розкоментировать фунцию ниже и заменить "пользователь, пароль и ип" на ваши данные.    
# Если у вас несколько хостингов эту фунцию можно копировать и вставить неограниченное количество раз только подставлять свои данные.
# И предварительно установить утилиту sshpass (apt-get install sshpass -y / yum install sshpass -y).
# Также нужно закинуть скрипт cmd в домашний каталог пользователя на SSH сервере например если root (/root), если user (/home/user).
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
        done
    elif [ $server = shell ] > /dev/null 2>&1
    then
        $comands
    else
        for servers in $server
        do
            screen -p 0 -S $servers -X stuff "$comands^m"
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
#            sshpass -p "пароль" ssh -o StrictHostKeyChecking=no пользователь@ип "sh cmd $1 $comands"
        done
    fi
}


if [ -f ".cmd.conf" ]; then
console=`grep console .cmd.conf`
else
echo console=tmux > .cmd.conf
fi


if [ $server = screen ] > /dev/null 2>&1
then
    sed -i s/$console/console="screen"/g .cmd.conf
elif [ $server = tmux ] > /dev/null 2>&1
then
    sed -i s/$console/console="tmux"/g .cmd.conf
else
    if [ $console = console="screen" ] > /dev/null 2>&1
    then
        screen_console > /dev/null 2>&1
    else
        tmux_console > /dev/null 2>&1
    fi
fi
Команди:
/sh cmd <
названия сессии под которой работает сервер> <команда> - отправит команду на нужен вам сервер/сессию.
/sh cmd all <команда> - отправит команду на все сервера/сессии tmux/screen
/sh cmd <сервера/сессия>,<сервера/сессия>,<сервера/сессия> <команда> - отправит команду на несколько нужних вам серверов/сессий.
/sh cmd shell <команда> - отправит команду в терминал/консоль вашего хостинга .
/sh cmd tmux - нужно ввести эту команду если вы используете утилиту tmux.
/sh cmd screen -
нужно ввести эту команду если вы используете утилиту screen.

Зависимости:
You must be logged in to see this link. / Screen

You must be logged in to see this link. - для bungeecord
You must be logged in to see this link. - для spigot/paper


Установка:

Скачать и установить плагинYou must be logged in to see this link./You must be logged in to see this link.
Скачать скрипт и закинуть файл cmd в папку /plugins/BungeeRunSH/ для сервера BungeeCord
Скачать скрипт и закинуть файл cmd в папку /plugins/ScriptRunner/ для сервера spigot/paper
Если вы установили скрипт на BungeeCord через плагин You must be logged in to see this link. вам нет необходимости устанавливать плагин You must be logged in to see this link. на все сервера. Но если у вас есть необходимость выполнить команду от консоли сервера spigot/paper тогда вам нужно на сервер установить You must be logged in to see this link.



Мой сервер: mc.fora.co.ua
Автор
GIGABAIT
Скачивания
78
Просмотры
3 340
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя GIGABAIT

Поделиться ресурсом

Последние обновления

  1. Глобальное Обновления

    Добавлена поддержка утилиты screen По умолчанию используется утилита tmux но если вы используете...
  2. Исправлена команда /sh cmd all

    Исправлена команда /sh cmd all теперь отправляет команду на все запущенные сервера/сесссии без...
  3. Отправка команд на несколько выбранных серверов

    Добавлена возможность отправки команд на несколько выбранных серверов. /sh cmd...
Назад
Сверху Снизу