Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

юморной скрипт

, Почти юмор ))
Статус пользователя Gecko
сообщение 17.4.2022, 21:00
Сообщение #1
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Я любитель bash, часто всю рутину я стараюсь выполнять скриптами, я даже ftp/sftp/rsync уже давно юзаю скриптом. Сегодня один мой хороший знакомый написал мне в телегу что нужно сделать так, чтобы боты на его сервере включались на ночь а выключались утром.
Раньше подобная задача умещалась в 1-2 строки, но сегодня меня задело (может из-за того что уже и забыл когда в последний раз играл в cs lol.gif ) и я решил юморнуть.

Суть задачи

Прикрепленное изображение


1-2 строки кода внезапно стали этим:
Прикрепленный файл  csbot.zip ( 1,01 килобайт ) Кол-во скачиваний: 16
sorry.gif
Прикрепленное изображение

csbot.sh
Код
#!/bin/bash

METAMOD=/opt/hlds/27015/cstrike/addons/metamod
FILE1=plugins.ini
CSBOT=/usr/bin/csbot

# Color
normal=$(echo "\033[m")
lightred=$(echo "\e[91m")
green=$(echo "\033[0;32m")

if [ "$(whoami)" != 'root' ]; then
clear
printf "\n"
printf " You have no permission to run \"sudo $0\" or sudo -i"
printf "\n\n"
exit 1;
fi

if [[ ! -f "${METAMOD}/${FILE1}" ]]; then
clear
printf "\n"
printf " File \"${FILE1}\" not exist"
printf "\n\n"
exit
fi

if [[ ! -f "${CSBOT}" ]]; then
ln -sf ${PWD}/$(basename $BASH_SOURCE) ${CSBOT} >/dev/null 2>&1
fi

main()
{
logo
cat <<"EOF"
  +----------------------------------------+
  |  instruction:  csbot [command]         |
  +-----------+----------------------------+
  |  command  |         description        |
  +-----------+----------------------------+
  |   start   |   enable bots              |
  +-----------+----------------------------+
  |   stop    |   disable bots             |
  +-----------+----------------------------+
  |   edit    |   edit plugins.ini         |
  +-----------+----------------------------+
EOF
printf "\n"
var=$(grep -iRls ";linux[[:space:]]*addons/yapb/bin/yapb.so[[:space:]]*" "${METAMOD}/${FILE1}")
if [[ "${var}" != "" ]]; then
printf "  [ csbot_tatus: ${lightred}Off${normal} ]"
printf "\n\n"
else
printf "  [ csbot_tatus: ${green}On${normal} ]"
printf "\n\n"
fi

}


logo()
{
clear
printf "\n"
cat <<"EOF"
  ??????? ???????? ???????   ???????  ?????????
???????? ???????? ???????? ????????? ?????????
???      ???????? ???????? ???   ???    ???  
???      ???????? ???????? ???   ???    ???  
???????? ???????? ???????? ?????????    ???  
  ??????? ???????? ???????   ???????     ???  
EOF
}


start() {
cd ${METAMOD}
sed -i 's/^;linux[[:space:]]*addons\/yapb\/bin\/yapb.so/linux addons\/yapb\/bin\/yapb.so/g' ${FILE1} >/dev/null 2>&1
main
printf "\n"
}

stop() {
cd ${METAMOD}
sed -i 's/^linux[[:space:]]*addons\/yapb\/bin\/yapb.so/;linux addons\/yapb\/bin\/yapb.so/g' ${FILE1} >/dev/null 2>&1
main
printf "\n"
}

edit(){
if [[ ! -f "/usr/bin/mc" ]]; then
clear
printf "\n"
printf " \"Midnight Commander\" not found"
printf " Please install \"Midnight Commander\""
printf "\n\n"
exit
fi
mcedit ${METAMOD}/${FILE1}
main
}

case "$1" in
start)
start
;;
stop)
stop
;;
edit)
edit
;;
*)
main
exit 1
esac
exit 0


После первого запуска скрипта ./csbot.sh его можно будет запускать так:
Цитата
csbot start | stop | edit по умолчанию выводит окно команд и статус модуля yapb.so

Скрипт проверяет строку в файле cstrike/addons/metamod/plugins.ini на наличие у строки комментария ";". Таким образом скрипт выводит статус определённого модуля On и Off

Задание в crontab:
Код
crontab -e

и добавляем 2 задания, первая задача активирует модуль yapb.so (включает ботов) а вторая задача модуль вырубает.
естественно ждём смены карты чтобы изменения вступили в силу.
Цитата
00 23 * * * csbot start
00 11 * * * csbot stop


команда
Код
csbot edit
откроет файл cstrike/addons/metamod/plugins.ini на редактирование

Скрипт простой и его можно легко поправить если кому нужно под подобные задачи.

Отредактировал: Gecko, - 17.4.2022, 21:08


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
XyLiGaN
сообщение 17.4.2022, 23:21
Сообщение #2
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

Gecko, ну красавчик, ток не все метамод плагины включаются/отключаются посредством смены карт, ну а для обычных плагинов я такой же скрипт юзаю и также выполнение через crontab по времени, ненужные плагины в ночном режиме отключаю, а днём ночной режим сам отключаю xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 18.4.2022, 7:39
Сообщение #3
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(XyLiGaN @ 17.4.2022, 23:21) *
Gecko, ток не все ... метамод плагины включаются/отключаются посредством смены карт...

Да это так, по этому можно добавить в скрипте вызов программы которая по RCON выполнит команду status и запишет её вывод в файл > /tmp/rcon_cs1.log, дальше получаем из этого файла онлайн на сервере, и если онлайн равен к примеру 0, то сервер перезагружаем. А содержимое файла можем вывести в самом низу функции main().

Вот пример который выведет ещё и онлайн игроков на сервере:
Код
#!/bin/bash
...
RCON_LOG1=rcon_cs1.log
STATS=$(cat ${RCON_LOG1} | grep [0-9] | awk '{print $7}')

echo "Online: ${STATS} players"
...


Я раньше на bash делал целую панель управления серверами cs 1.6 в таком духе, и скажу очень удобно и информативно получилось, в разы быстрее, удобнее и безопаснее чем web версия. Если найду её обязательно выложу, писать с нуля сейчас на bash я бы наверное не стал, лучше на GoLang или даже на Python. Саму концепцию написания подобной ПУ я уже описывал на форуме, по моему в топике GameCP или подобной ПУ.


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 18.4.2022, 19:01
Сообщение #4
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

На всякий случай, вот отдельный файл скрипта.
Будет работать с такими строками:
Код
;linux addons/yapb/bin/yapb.so
;;   linux          addons/yapb/bin/yapb.so
   ;;;     ;     ;;;    linux        addons/yapb/bin/yapb.so
;;;     ;     ;;;       linux          addons/yapb/bin/yapb.so


То есть, с учётом табуляции и пробелов.
Воспринимайте этот файл как концептуальное решение по одному конкретному функционалу, работа с конфигурационными файлами отключение/включение плагинов.
Его очень легко изменить под себя либо дополнить им свой скрипт.

Чтобы название топика не вводило в заблуждение, смешной потому что по аналогии можно создать скрипт в 200 строк к примеру по выключению сервера, то есть в место
Код
shutdown -r now
городить огород с интерфейсом в 200 строк cbf1b2bfde1a.gif
по этому, просьба воспринимать это как творческий юмор, конечно с реальным функционалом который может быть полезен в виде функции.

Прикрепленный файл  csbot.zip ( 1,02 килобайт ) Кол-во скачиваний: 15



Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: