1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Простейший анализатор консольных сообщений сервера

Тема в разделе "Управление сервером Bukkit", создана пользователем prool, 31 окт 2020.

  1. Автор темы
    prool

    prool Активный участник

    Баллы:
    61
    Я сделал для себя вот такую админскую утилиту: когда ко мне на сервер заходит игрок, мне приходит сообщение по электронной почте. Серверам с хорошим посещением эта утилита будет бесполезна и даже вредна: она заспамит почтовый ящик админа, а мне в самый раз, ко мне заходит один человек в неделю (свой сервер я рассматриваю как экспериментальный и не анонсирую в каталогах).

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

    Свой сервер я запускаю так:

    java -jar minecraftserver.jar | tee

    tee - это не стандартная юникс-утилита tee, а ее модификация, сделанная мной. Она делает все, что делает tee (то есть тупо копирует вход на выход и не мешает работе консоли), но дополнительно, обнаружив подстроку "joined the game" посылает мне письмо с именем того, кто зашел).

    Написать такое очень просто, но если кому нужен будет исходный текст, напишу ссылку в коментах.
    Кстати, по такому методу можно написать и более сложный анализатор консольных логов.
     
  2. Автор темы
    prool

    prool Активный участник

    Баллы:
    61
    Я человек крайне любопытный и мне интересно, чем вызвано это хамство? То ли я написал оффтопик, то ли уже есть плагин, который собирает всю статистику, то ли вы, сударь, просто хамло?
     
  3. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Последнее.
    Это эдакий местный юродивый.
     
  4. keepitslice

    keepitslice Активный участник Пользователь

    Баллы:
    66

    вопрос был задан небезосновательно, просто немного экспрессивно))
     
  5. Автор темы
    prool

    prool Активный участник

    Баллы:
    61
    Кстати, этот же метод можно использовать, если вы хотите получить сообщение себе на е-мейл, когда ваш сервер упадет. Как только stdin закроется, модифицированная tee сообщит вам, что ваш сервер упал. Хотя использование ватчдога будет более правильным, наверное.

    (Я пришел на этот сервер познакомиться и пообщаться с коллегами, изучить инструкции и мануалы, поделиться своими наработками, пусть они пока и небольшие, но меня слегка удивила местная агрессивность, наверное это из-за карантина и сопутствующего ему стресса. Впрочем, подросткам свойственна агрессия, об этом еще Достоевский писал. Кроме Майнкрафта и Майнтеста я еще поигрываю в MUDы (multiusers dungeon), в них зачастую играют сорокалетние дядьки, но ведут себя как 14-летние дебилы, так что дело не в возрасте)

    И по сути вопроса, меня в детстве били по голове, но не часто, а пару-тройку раз я падал затылком на твердую поверхность.
     
  6. Witenin

    Witenin Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Witenin
    Он уже не подросток :nerd:
     
  7. Babar

    Babar Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Babar
    Хамство - обычная особенность русского менталитета. Если человек зарегистрировался 10 лет назад, нафлудил 20к сообщений, то считает возможным подобным образом вести диалог. Типа дедовщина местного разлива :)
    При этом стоит отметить, что alexandrage совсем не глуп, как может показаться на первый раз, но к большому сожалению, в отличии например от того же GamerForEA, свою неглупость демонстрирует подобным образом :)
    За старания спасибо.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Да потому что ТС бьет по мухи из базуки. Все это делается намного проще без парсера логов. На вход игрока есть свой ивент, как и на многие другие вещи.
     
  9. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Допустим, у него обычная моджанговская ванилька. Что посоветуете в данном случае?
    К тому же автор указал, что в Джаве не силён.
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Так спигот же и там плагины работают. И не нужно там знать java, там писать то пару строчек на 1 ивент. Если уж такой костыль смог и это сможет.
     
  11. keepitslice

    keepitslice Активный участник Пользователь

    Баллы:
    66
    Ну слушай_те, костылить парсер сообщений с консоли о подключении нового игрока и отправлять об этом уведомление на почту уже звучит сомнительно. Впоследствии Вы пришли на форум и предлагаете сделать более интеллектуальный парсер.. в то время когда существует API и сопутствующая документация. На что можно рассчитывать с такими безумно гениальными идеями?
    Зубрите жабу или заплатите школьнику 200 руб. который будет этим самым сложным анализатором консольных логов :nerd:
     
  12. Автор темы
    prool

    prool Активный участник

    Баллы:
    61
    Еще модифицировал свой мод команды tee. Теперь при вводе любой неверной команды в консоль сервера выдается полная дата (с числом, месяцем и годом). Это удобно, потому что сам Майнкрафт выдает в консоли только время, без числа.

    И вот еще идея в голову пришла: поставить и перед запуском сервера конвейер. Так можно просто делать свои админские команды:

    pipe_1 | java -jar minecraftserver.jar | pipe_2
     

Поделиться этой страницей