Бегло полистал, ничего подобного не нашел.
Захотел как-то уйти от screen, использовать LGSM не позволила религия(громоздко на мой взгляд), ограничился "самописным" средством.
Требования
Менеджер сессий - tmux
Опционально - Useful Commands (ставится исключительно ради sm_exec для отправки игрокам команды retry при перезагрузке сервера.)
Функционал:
Запуск, остановка, перезапуск, перезапуск с таймером(отправляет внутрь окна sm_say с временными интервалами), статус сервера(up/down), вывод status из консоли сервера в shell, вывод stats из консоли сервера в shell.
Установка:
1. Создать файл server.sh с содержимым спойлера в директории с srcds_run
2. Отредактировать переменные:
name=
MAP=
MAXPLAYERS=
PORT=
TICK=
FPS=
TOKEN=
ADDITIONAL=
Не забываем, что переменная берется в кавычки, если содержит пробелы (прим. ADDITIONAL)
3. chmod 700 server.sh
4. Можно пользоваться ( ./server.sh start ; ./server.sh stop ; ./server.sh restart ; ./server.sh restart-planned ; ./server.sh status ; ./server.sh stats ; ./server.sh info )
Проверено и используется на последних версиях ubuntu, но должно работать везде.
Захотел как-то уйти от screen, использовать LGSM не позволила религия(громоздко на мой взгляд), ограничился "самописным" средством.
Требования
Менеджер сессий - tmux
Опционально - Useful Commands (ставится исключительно ради sm_exec для отправки игрокам команды retry при перезагрузке сервера.)
Bash:
#!/bin/sh
# Stefan, 2019
# Tmux based SRCDS management script
DIR="$( cd "$( dirname "$0" )" && pwd )"
tmux=$(which tmux)
SRCDS="$DIR/srcds_run" # as you may see, script must be located in the same dir with a srcds_run
# Edit these #
name="css_dm" #specifies the name of a tmux pane
MAP="cs_compound"
MAXPLAYERS=64
PORT=27015
TICK=100
FPS=500
TOKEN=your_steam_token
ADDITIONAL="+sv_voicecodec vaudio_celt +exec server.cfg +sv_setsteamaccount $token +fps_max $FPS"
starting_line="$SRCDS -condebug -console -game cstrike -maxplayers $MAXPLAYERS -port $PORT -tickrate $TICK +map $MAP $ADDITIONAL"
# Don't touch unless you know what you're doing #
tsend()
{
$tmux send-keys -t $name "$1" Enter
}
case $1 in
start)
if $tmux ls | grep "$name" ; then
echo "Pane running already: $name. Stop it first." && exit 0
else
echo "Starting up $name pane."
$tmux new -d -s $name "$starting_line"
fi
;;
stop)
if $tmux ls | grep "$name" ; then
echo "Active $name session found. Stopping..."
$tmux kill-session -t "$name"
else
echo "$name not running."
fi
;;
restart)
if ! $tmux ls | grep "$name" ; then
echo "$name is not running. Cannot REstart."
else
echo "Running session found. Initiating restart..."
tsend "sm_exec @humans retry" #UsefulCommands by [email protected]
sleep 0.2
$tmux kill-session -t "$name"
#sleep 0.5
$tmux new -d -s $name "$starting_line"
sleep 0.5
if $tmux ls | grep "$name" ; then
echo "Restart successful for pane: $name"
else
echo "Restart failed for pane: $name !!! Investigate manually."
fi
fi
;;
status)
if $tmux ls | grep "$name" ; then
echo "Tmux pane $name is up."
else
echo "Tmux pane $name is down."
fi
;;
info)
if $tmux ls | grep "$name" ; then
#$tmux clear-history
$tmux send-keys -t $name 'status' Enter
sleep 0.5
$tmux capture-pane -t $name
$tmux show-buffer | grep -A8 hostname | head -8
else
echo "Tmux pane $name is not running."
fi
;;
stats)
if $tmux ls | grep "$name" ; then
$tmux send-keys -t $name 'stats' Enter
sleep 0.5
$tmux capture-pane -t $name
$tmux show-buffer | grep -A2 Map_changes | head -2
else
echo "Tmux pane $name is not running."
fi
;;
restart-planned)
if $tmux ls | grep "$name" ; then
tsend "sm_say Reloading..."
sleep 1
tsend "sm_say Server is going for planned restart. You will be reconnected."
sleep 1
tsend "sm_say Server restarting in 30 seconds ..."
sleep 10
tsend "sm_say Server restarting in 20 seconds ..."
sleep 10
tsend "sm_say Server restarting in 10 seconds ..."
sleep 5
tsend "sm_say Server restarting in 5 seconds ..."
sleep 1
tsend "sm_say Server restarting in 4 seconds ..."
sleep 1
tsend "sm_say Server restarting in 3 seconds ..."
sleep 1
tsend "sm_say Server restarting in 2 seconds ..."
sleep 1
tsend "sm_say Server restarting in 1 seconds ..."
sleep 1
tsend "sm_exec @humans retry" #UsefulCommands by [email protected]
sleep 0.2
$tmux kill-session -t "$name"
cat /dev/null > $DIR/cstrike/addons/sourcemod/Chat.log
if ! $tmux ls | grep "$name" ; then
$tmux new -d -s $name "$starting_line"
fi
else
echo "Tmux pane $name is not running. Can't restart"
fi
;;
*)
echo "Invalid argument! Valid arguments are: start ; stop ; restart ; restart-planned ; status ; stats ; info"
;;
esac
Функционал:
Запуск, остановка, перезапуск, перезапуск с таймером(отправляет внутрь окна sm_say с временными интервалами), статус сервера(up/down), вывод status из консоли сервера в shell, вывод stats из консоли сервера в shell.
Установка:
1. Создать файл server.sh с содержимым спойлера в директории с srcds_run
2. Отредактировать переменные:
name=
MAP=
MAXPLAYERS=
PORT=
TICK=
FPS=
TOKEN=
ADDITIONAL=
Не забываем, что переменная берется в кавычки, если содержит пробелы (прим. ADDITIONAL)
3. chmod 700 server.sh
4. Можно пользоваться ( ./server.sh start ; ./server.sh stop ; ./server.sh restart ; ./server.sh restart-planned ; ./server.sh status ; ./server.sh stats ; ./server.sh info )
Проверено и используется на последних версиях ubuntu, но должно работать везде.