Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Можно ли упростить этот запрос? [Решено]  (Прочитано 1301 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gertsog

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Доброго времени суток!
Устроился на работу, пришлось снова столкнуться с линуксом. Поставил дома Ubuntu Server, чтобы практиковаться.
В общем, задача стояла следующая: получить из лога сервера подробности последней сессии конкретного юзера. Родил такую команду:
session_id=$(cat ~/server.log | grep user_id | tail -n 1 | cut -c33-64) && cat ~/server.log | grep $session_id > ~/my.logСобственно, путь до логов не имеет значения, 33-64 - это фиксированный диапазон последней строки, где находится айдишник сессии.
Можно ли как-нибудь упростить этот запрос?

Алиас я уже сделал, суть вопроса не в этом.
« Последнее редактирование: 18 Марта 2020, 11:21:00 от zg_nico »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6752
  • 20% Cooler
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #1 : 08 Октября 2019, 17:54:43 »
не трубить кота, как минимум ;)
cat file | grep pattern
grep pattern file


Пользователь добавил сообщение 08 Октября 2019, 17:57:55:
grep "$(grep user_id ~/server.log | tail -n 1 | cut -c33-64)" ~/server.log > ~/my.log
« Последнее редактирование: 08 Октября 2019, 17:57:55 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #2 : 08 Октября 2019, 18:30:28 »
Цитировать
33-64 - это фиксированный диапазон последней строки, где находится айдишник сессии.
Можно эту строку увидить? Я думаю можно сделать проще правильнее.

Оффлайн Gertsog

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #3 : 08 Октября 2019, 18:38:52 »
Цитировать
33-64 - это фиксированный диапазон последней строки, где находится айдишник сессии.
Можно эту строку увидить? Я думаю можно сделать проще правильнее.
04/10/2019 13:25:20:551  INFO - 2C806D3BD6465DCA3431EC00BF7A3C16:/divr : Sending to ICC: blahblahblah


Пользователь добавил сообщение 08 Октября 2019, 18:42:21:
не трубить кота, как минимум ;)
grep "$(grep user_id ~/server.log | tail -n 1 | cut -c33-64)" ~/server.log > ~/my.log

Благодарю, завтра опробую :)
« Последнее редактирование: 08 Октября 2019, 18:54:20 от Gertsog »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #4 : 08 Октября 2019, 19:31:35 »
Код: (bash) [Выделить]
grep -F $(sed -n '/bla/h;$! d;/ - /x;s//\n/;/\n/D;s/:/\n/;P' $HOME/server.log) $HOME/server.log > $HOME/my.log
« Последнее редактирование: 08 Октября 2019, 19:51:18 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #5 : 08 Октября 2019, 20:53:55 »
Gertsog,
С айдишником сессии понятно, а где юзер_айди? /divr ?

Оффлайн Gertsog

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Можно ли упростить этот запрос?
« Ответ #6 : 09 Октября 2019, 04:47:50 »
ReNzRv,
айди юзера в сессии фигурирует только при коннекте и дисконнекте.
При коннекте часть "blahblahblah" выглядит примерно так: Storing :session___ani to complex: session:ani  as [869033330]
При нормальном дисконнекте вместо "blahblahblah" выдаётся длинная ссылка, куда записываются подробности сессии. Часть с айдишником выглядит примерно так: &fields=%22primary_ani%22%7C%22869033330%22%2C%22contact_attr
Полную ссылку дать не могу, ибо конспирация.
А если что-то не так и дискон произошёл "аварийно", то в логе айдишник фигурирует только при коннекте.
« Последнее редактирование: 09 Октября 2019, 04:53:35 от Gertsog »

 

Страница сгенерирована за 0.066 секунд. Запросов: 23.