Многие, кто пытались вывести журнал 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 только на лету переконвертирует время юникс в человеческое. Вывод скрипта можно использовать в других скриптах.