SH скрипт для отсылки команды в игру

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
Вот такой код у меня сработал
screen -S classic -X -p0 stuff 'say :D'`echo -ne '\015'`
Теперь как все это объединить в 1 ... ?
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Это я писал выше. Остается только p0 добавить.
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
Спасибо tiger_by очень огромное!
Ну вот последний вопрос остался я хочу не 1 сообщение послать что-то типо цикла как в плагине advertisments это не для рекламы это подсказки для карты 1 а в рекламу не хочу их кучу вбивать.
Как добавить больше сообщений и еще как остановить данный скрипт если не запущен сервер?
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Очень похоже на дай мед, дай и ложку.
Про много сообщений непонятно. Они должны все вместе выходить или по очереди, но все же тебе никто не мешает делать типа
C-подобный:
while ps ax | grep screenname | grep -v grep > /dev/null; do
  screen -S .... 'say first messgae
'; sleep 5
  screen -S .... 'say second messgae
'
.....
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
Очень похоже на дай мед, дай и ложку.
Про много сообщений непонятно. Они должны все вместе выходить или по очереди, но все же тебе никто не мешает делать типа
C-подобный:
while ps ax | grep screenname | grep -v grep > /dev/null; do
  screen -S .... 'say first messgae
'; sleep 5
  screen -S .... 'say second messgae
'
.....
Ну прости что так щас попробую )
Я скрипт сделал и все вроде норм но если выйти из Putty или нажать Ctrl + C то перестает крутить текст.
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
А вот тут надо делать новый скрин
C-подобный:
screen -AmdS say_script ./script.sh
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
А вот тут надо делать новый скрин
C-подобный:
screen -AmdS say_script ./script.sh
Понел спс
Реклама внутри скрина не крутиться вот что пишет
-X: stuff: invalid option exec say-ne
Вот сам скрипт
C-подобный:
while ps ax | grep classic | grep -v grep > /dev/null; do
screen -S classic -X -p0 stuff 'exec say'`echo -ne '\015'`;sleep 15
done
А если это будет не внутри скрина то все нормально
Сервер и скрипт запускаются так:
C-подобный:
screen -AmdS classic ./srcds_run
sleep 10;screen -AmdS say_script ./advert.sh
 
Последнее редактирование:

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Файл adverts.sh должен быть таким
C-подобный:
#!/bin/bash
while ps ax | grep classic | grep -v grep > /dev/null; do
 screen -S classic -X -p0 stuff 'exec say'`echo -ne '\015'`;sleep 15 
done
Заметь разницу. И он должен иметь x права (запуск).
У меня все удачно пишет в чат на тест серве.
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
Файл adverts.sh должен быть таким
C-подобный:
#!/bin/bash
while ps ax | grep classic | grep -v grep > /dev/null; do
 screen -S classic -X -p0 stuff 'exec say'`echo -ne '\015'`;sleep 15 
done
Заметь разницу. И он должен иметь x права (запуск).
У меня все удачно пишет в чат на тест серве.
Права x поставлены если бы их не было скрипт бы не работало даже и без скрина, а так скрин выдает Error только со screen модом.
Щас попробую новый код.
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Вся петрушка в том, что ты не ставишь ша банг (#! /bin/bash)
Это дает системе понимание, как обрабатывать скрипт.
 

Vit_ amin

Добрая душа
Сообщения
1,552
Реакции
740
Все заработало как часы tiger_by спасибо большое очень выручил :beer:
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Почитал, нашел реально много для себя интересного =) Реально 4 страницы исписаны не зря, разобался наконец со своим глюком (там как раз -p0, не могу что-то разобраться что делать когда выдает что нет сессии терминала, или что-то подобное), сейчас буду тестировать php bash - будет идеально, если сервер можно перезапускать через сайт без установки кучи тяжелых приложений типа монита и подобного
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Эксперементировал с этим скриптом, заметил несколько довольно странных особенностей:
- если выполнять такую команду, используя /bin/sh, то никаких ошибок не выводится, но команда до сервера не доходит, работает только если ставить /bin/bash
- Почему-то этот скрипт у меня не получается выполнить через кронтаб, поэтому использую цикл

Пока еще продолжаю эксперементировать, но идея получается очень инетересной, за счет использования sleep можно делать реально интересные фишки (чем через кронтаб)
 
Сверху Снизу