обственно проблема такова:
Имеется squid с авторизацией в win домене. Все работает, но в логах пишется имя пользователя (пользователи на русском) в двоичном виде типа "3%EE%EF%EE%F0%EF%EE%F0%EF%F0%EE%". Соответственно sarg ну или любая другая программа анализа логов не воспринимает пользователей в таком виде.
Внимание, вопрос:
есть ли какое-нибудь решение изложенной проблемы? Весь инет перерыл, что-то не нашел. Использовать английские имена пользователей не предлагать)))) Debian Linux 5.0, squid 2.7, Samba версии 3.25. Контролер домена 2003.
[Ответ]
wbinfo -u выводит по русски...
нашел решение путем перекодирования лог файла squid, может кому сгодится:
Запускаем cat old_log | ./convert.awk > new_log
Код:
#!/usr/bin/awk -f
BEGIN {
for(i = 0; i < 10; i++)
hex[i] = i
hex["A"] = hex["a"] = 10
hex["B"] = hex["b"] = 11
hex["C"] = hex["c"] = 12
hex["D"] = hex["d"] = 13
hex["E"] = hex["e"] = 14
hex["F"] = hex["f"] = 15
}
{
########################################################################
# 8 - колонка - это имя пользователя
# urldecode - в awk в стандартную библиотеку не входит, но можно найти
# http://geni.ath.cx/unix.html#_One-liner_urldecode_functions
name = $8
name_decode = ""
gsub(/\+/, " ", name)
while(match(name, /%../)){
if(RSTART > 1)
name_decode = name_decode sprintf("%s", substr(name, 1, RSTART-1))
name_decode = name_decode sprintf("%c", hex[substr(name, RSTART+1, 1)] * 16 + hex[substr(name, RSTART+2, 1)])
name = substr(name, RSTART+RLENGTH)
}
name_decode = name_decode name
########################################################################
# пробелы на _
gsub(/ /, "_", name_decode)
$8 = name_decode
print
}
Помогли на форуме фридома.
[Ответ]