LINUX.ORG.RU

Взаимодействие с логом

 , ,


0

2

Доброго времени суток? Может ли кто-нибудь подсказать как организовать следующую конструкцию? tail -f «путь до лог файла» | при появлении в логе записи содержащей например «INF Chat: 'Server': test» | получаем имя игрока (Server) | и читаем сообщение (test) | и вызываем «bash ./Server_test.sh»

После чего продолжаем мониторить и так по кругу до прерывания скрипта вручную

Что-то мне подсказывает, что ты какой-то адовый велосипед пытаешься сделать. Результат всех телодвижений какой должен быть?

Radjah ★★★★★ ()

Посмотри fail2ban Строку поиска и action пишешь свои.

shtain ()
Ответ на: комментарий от Radjah

Итак рассказываю как едет велосипед)

Есть сервер игры 7 Days To Die, на сервер есть доступ по telnet, есть доступ напрямую к лог файлу консоли сервера (данные в логе, и в консоли telnet одинаковые). Что хочу в итоге: 1. Игрок пишет в чат слово 2. Это отображается в логе сервера 3. Скрипт следящий за логом сервера видит «ник», и «сообщение» 4. Если есть файл «ник_сообщение.sh» выполняем его (скрипт отправит действие по telnet на сервер)

WorstPilot ()
tail -f file.log | grep 'pattern' | while read line ; do 
   ./do_something_with "$line"
done 


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

bl ★★★ ()

INF Chat: 'Server': test» | получаем имя игрока (Server) | и читаем сообщение (test) | и вызываем «bash ./Server_test.sh»

INF Chat: 'Server': rm -rf

legolegs ★★★★★ ()
Ответ на: комментарий от bl

Логично

НО! т.к. мониторинг выполняется не от root, а о от пользователя ограниченного своей папкой /home/ ничего не случится, далее т.к. мы выводим шаблон «вызвать ./имя_сообщение.sh» в таком случае мы просто получим «bash: server_rm -rf.sh: No such file or directory» так что стрелять себе в голову я не планирую, к тому же сервер приватный, и в линуксе ребята не шарят, но за предупреждение, огромное спасибо!

WorstPilot ()
Ответ на: Логично от WorstPilot

да-да. если будет попытка выполнить что то типа такого.

some ; rm -rf /; some  

то оно отработает как то запланировал мошенник.
проверкой на существование команд можешь озаботиться внутри блока while do .. done . правда всеравно возможны уязвимости.

bl ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.