Человеческий вывод даты в журнале squid.

Многие, кто пытались вывести журнал squid в виде с человекочитаемой датой, сталкивались с тем, что он упорно игнорирует ваши попытки показать дату и время в адекватном формате. Стандартное время юникс удобно для автоматической обработки журнала, но для поиска и устранения проблем с доступом удобнее человеческое время. На этот случай нам с гопотой удалось написать довольно удобную вещь:

cat squid-showlog.sh
#!/bin/bash

# Запуск: squid-showlog.sh N

# Этот скрипт:
# выводит N последних строк журнала squid с человекочитаемым форматом даты, если N передано в виде числа как параметр командной строки;
# иначе выводит последние 10 строк.

# Инициализируем переменную $a значением по умолчанию
a=10

# Присваиваем переменной $a значение, если задано
if [[ -n «$1» && «$1″ =~ ^[0-9]+$ ]]; then
a=»$1»
fi

# Используем переменную $a в команде tail
tail -n «$a» -f /var/log/squid/access.log | while read line; do
unix_time=$(echo «$line» | awk ‘{print $1}’)
local_time=$(date -d @»$unix_time» +»%Y.%m.%d %H:%M:%S»)
echo «${line/$unix_time/$local_time}»
done

Скрипт работает как обычный tail -n N -f /var/log/squid/access.log только на лету переконвертирует время юникс в человеческое. Вывод скрипта можно использовать в других скриптах.

Запись опубликована в рубрике internet с метками , , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *