Автор Тема: Преобразовать число в дату переданное по конвееру (РЕШЕНО)  (Прочитано 705 раз)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Имеется лог:
# cat /var/log/squid/access.log
Цитировать
1616656205.531    314 192.168.5.64 TCP_TUNNEL/200 8952 CONNECT nav.smartscreen.microsoft.com:443 - ORIGINAL_DST/51.144.113.175 -
1616656205.742 180337 192.168.5.53 TCP_TUNNEL/200 3882 CONNECT ruv.hotmo.org:443 - ORIGINAL_DST/82.192.80.132 -
1616656205.994  10256 192.168.5.64 TCP_TUNNEL/200 3182 CONNECT img-s-msn-com.akamaized.net:443 - ORIGINAL_DST/2.19.204.211 -
1616656206.872 180988 192.168.5.53 TCP_TUNNEL/200 4386383 CONNECT ds.cdn15.deliciouspeaches.com:443 - ORIGINAL_DST/51.159.3.158 -

Нужно получить:
# cat /var/log/squid/access.log | ЧТО ТО ВСТАВИТЬ
Цитировать
...
Чт мар 25 10:10:05 MSK 2021 180337 192.168.5.53 TCP_TUNNEL/200 3882 CONNECT ruv.hotmo.org:443 - ORIGINAL_DST/82.192.80.132 -
...

Паьятка:
# date -d @1616656205.742
Чт мар 25 10:10:05 MSK 2021
У кого рука набита, дайте правильный синтаксис для строки:
# cat /var/log/squid/access.log | ЧТО ТО ВСТАВИТЬ
« Последнее редактирование: 26.03.2021 10:58:13 от rabochyITs »

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
https://www.unix.com/302160058-post8.html
cat /var/log/squid/access.log | awk '{"date -d @"$1|getline dt;$1=dt}1'
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
https://stackoverflow.com/a/15243437
sed чего-то у меня не вышло, хотя вот так по идее должно работать, но нет:
sed -E "s|^([[:digit:].]+)|$(date -d @\1)|g" /var/log/squid/access.logпочему-то date не хочет принимать \1 ни в какую
« Последнее редактирование: 25.03.2021 12:58:47 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
https://www.unix.com/302160058-post8.html
cat /var/log/squid/access.log | awk '{"date -d @"$1|getline dt;$1=dt}1'
Спасибо огромное, помогло!

А как прицепить эту конструкцию к watch tail -n15 /var/log/squid/access.log | ... ?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
watch tail -n15 /var/log/squid/access.log | ... ?
я так понимаю, проблема возникает с кавычками ? :-)
она решается так:
watch 'tail -n15 /var/log/squid/access.log | awk '"'"'{"date -d @"$1|getline dt;$1=dt}1'"'"''
объяснение есть тут https://stackoverflow.com/a/1250279
Сноси Винду, переходи на Линукс ! :)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
watch 'tail -n15 /var/log/squid/access.log | awk '"'"'{"date -d @"$1|getline dt;$1=dt}1'"'"''

То что нужно, а вернее не мог заставить watch работать по конвееру, оказывается нужно было так watch 'tail -n15 /var/log/squid/access.log | grep -i 443' и все дело в кавычках: watch ' бла бла | бла бла '

Еще одно спасибо!
Надо "спецу" в форум профессиональной работы в консоли забросить пару "цитат" из этих примеров ))

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
watch 'tail -n15 /var/log/squid/access.log | awk '"'"'{"date -d @"$1|getline dt;$1=dt}1'"'"''

То что нужно, а вернее не мог заставить watch работать по конвееру, оказывается нужно было так watch 'tail -n15 /var/log/squid/access.log | grep -i 443' и все дело в кавычках: watch ' бла бла | бла бла '

Еще одно спасибо!
Надо "спецу" в форум профессиональной работы в консоли забросить пару "цитат" из этих примеров ))

Напишите заглавие и как это должно выглядеть в целом как окончательный вариант. В смысле чтобы было понятно непосвящённому, о чём идёт речь. Кратко с комментариями выбросов. Чтобы был понятен ход мысли. Сюда в тему или мне в личку. Без разницы. Заброшу. Это не проблема.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Напишите заглавие и как это должно выглядеть в целом как окончательный вариант.
Вырезка из моей памятки по настройке сквида:
# просмотр лога с человеческой датой
cat /var/log/squid/access.log | awk '{"date -d @"$1|getline dt;$1=dt}1'
# просмотр логов онлайн
watch tail -n15 /var/log/squid/access.log
watch 'tail -n15 /var/log/squid/access.log | awk '"'"'{"date -d @"$1|getline dt;$1=dt}1'"'"''
tail -n1000 /var/log/squid/access.log | awk '{"date -d @"$1|getline dt;$1=dt}1' | grep -i denied


По молчанию вывод в лог выглядит так:
Цитировать
1616832016.016   3154 192.168.8.3 TCP_TUNNEL_ABORTED/200 6820 CONNECT self.events.data.microsoft.com:443 - ORIGINAL_DST/52.114.128.9 -
1616832016.033 101122 192.168.8.3 TCP_TUNNEL_ABORTED/200 8944 CONNECT msedge.api.cdp.microsoft.com:443 - ORIGINAL_DST/40.124.168.44 -
1616832036.508    503 192.168.8.50 TCP_TUNNEL/200 3983 CONNECT settings-win.data.microsoft.com:443 - ORIGINAL_DST/51.11.168.232 -

После прогона лог файла через конвеер в командной строке получаем удобочитаемый вывод:
Цитировать
Сб мар 27 11:09:35 MSK 2021 1535 192.168.8.4 TCP_TUNNEL/200 93421 CONNECT settings-win.data.microsoft.com:443 - ORIGINAL_DST/51.104.136.2 -
Сб мар 27 11:09:56 MSK 2021 726 192.168.8.50 TCP_TUNNEL/200 4474 CONNECT v10.events.data.microsoft.com:443 - ORIGINAL_DST/52.114.88.28 -
Сб мар 27 11:09:56 MSK 2021 354 192.168.8.50 TCP_TUNNEL/200 4474 CONNECT v20.events.data.microsoft.com:443 - ORIGINAL_DST/52.114.88.28 -