Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Избранное (https://forum.antichat.xyz/forumdisplay.php?f=89)
-   -   WhiteCat LogCleaner 1.0 by ShadOS (https://forum.antichat.xyz/showthread.php?t=36595)

ShadOS 28.03.2007 20:48

WhiteCat LogCleaner 1.0 by ShadOS
 
Приветствую всех. Вот зарелизил свой логклинер (видимо это традиция для большинства команд, в т.ч. и для HellKnights =)) с поддержкой регулярных выражений. Без тени скромности можно сказать что он один из лучших в своём роде, тем более в природе логклинеров с поддержкой Perl-совместимых регулярных выражений я не видел. Может чистить как бинарные так и текстовые логи. Пользутесь наздоровье. Жду отзывов и пожеланий по развитию проекта.
Скачать можно здесь:
http://shados.0x48k.cc/releases/whitecat.c
http://hellknights.void.ru/releases/0x48k-whitecat.c

L0rd_Ha0S 29.03.2007 22:06

Молоток! Лог-клинер что надо :) Все работает как положено, но нашёлся один недостаток - в процессе своей работы программа создает гигантские временные файлы, и как получилось в моем случае, размер временного файла превысил максимально допустимый размер файла для ext2 - 2Gb, и программа получила SIGKILL, а временный файл остался. Это может привести например к тому, что логи могут быть вычищены неполностью(потому что whitecat немедленно завершается). Исходя из того что на большинстве Linux-серверов используется именно ext2 в качестве корневой ФС, предлагаю добавить функцию периодической проверки размера временного файла, и если размер временного файла превышает определенный допустимый размер (например 1 Gb) - то удалить все что уже не используется из этого файла(вычистить его), либо если какие-то данные из этого файла все еще нужны, то скинуть их в отдельный файл. Так клинер не превысит пределов на размер файла, и спокойно завершит все что ему положено. Ну или придумать что-нить помудрее :D
Прикладываю скрин, там то, что произошло при работе whitecat :)
http://img254.imageshack.us/img254/8...2312rk6.th.jpg

ShadOS 30.03.2007 14:04

HaOS, молодец. Спасибо за тестирование (+++ даю) - обязательно что-нибудь придумаю. Если есть ещё предложения по совершенствованию - пиши, исправим! А исходный файл какого размера был? Какая там ФС для /var/log ? На скриншоте ничего не вижу.

Alexsize 30.03.2007 16:14

Да. Логклинер тоже очень нам нужен! Но руткиты важнее.. Кстати он корректно работает под FreeBsd ???

ShadOS 30.03.2007 16:43

Цитата:

Сообщение от Alexsize
Да. Логклинер тоже очень нам нужен! Но руткиты важнее.. Кстати он корректно работает под FreeBsd ???

В FreeBSD не тестировал. Тестировал в Gentoo 2006.1 (ядро 2.6.19) Linux и Fedora 6 Linux (ядро 2.6.20), но должен работать корректно и в BSD - читай вводную. Оттестируешь - дам плюсов =)

Alexsize 30.03.2007 16:54

Начнем с компилляции


In file included from whitecat.c:33:
/usr/include/utmp.h:54: error: syntax error before "int32_t"
/usr/include/utmp.h:63: error: syntax error before "int32_t"
whitecat.c:38:21: lastlog.h: No such file or directory
whitecat.c: In function `clear_uwbtmp':
whitecat.c:247: error: structure has no member named `ut_user'
whitecat.c:247: error: structure has no member named `ut_user'
whitecat.c: In function `clear_lastlog':
whitecat.c:289: error: structure has no member named `ll_time'


Это 6.2-STABLE FreeBSD . Тут, как я понимаю, нету библиотеки. Но я могу ошибаться.

ShadOS 30.03.2007 17:34

Ok, значит на FreeBSD не так всё ажурно как в Linux. Но эти ошибки не проблема - исправим. Спасибо.

L0rd_Ha0S 30.03.2007 19:29

Цитата:

А исходный файл какого размера был?
Не совсем понял, какой исходный файл имеется в виду - сам исходник whitecat.c или размер самих логов? Если whitecat.c, то 10000 байт(прикольно, так ровно вышло, только заметил :)), если размер логов, то не знаю, как-то не посмотрел перед тестированием :confused:
Цитата:

Какая там ФС для /var/log ?
ext2, /var/log у меня на корневом разделе лежит.

ShadOS 30.03.2007 20:04

хм... странно получается. Если /var/log тоже на корневом разделе, то как там может поместиться исходный файл-лог больше чем допустимый размер файла? Временный файл должен быть аналогичен по размеру или меньше исходного. А исходники whitecat.c здесь непричём =) Протестируй ещё раз, пожалуйста, и посмотри размеры файлов предварительно. И ещё раз глянь внимательно в /etc/fstab.

L0rd_Ha0S 30.03.2007 23:00

Цитата:

Если /var/log тоже на корневом разделе, то как там может поместиться исходный файл-лог больше чем допустимый размер файла? Временный файл должен быть аналогичен по размеру или меньше исходного.
А он и не больше :) Вот посмотри
Код:

root@HaPriS(21:25:03)/tmp # gcc -o whitecat whitecat.c
root@HaPriS(21:25:04)/tmp # ll /var/log/lastlog
-rw-rw-r-- 1 root utmp 572K 2007-03-30 21:17 /var/log/lastlog
root@HaPriS(21:25:18)/tmp # ll /var/log/wtmp
-rw-rw-r-- 1 root utmp 591K 2007-03-30 21:17 /var/log/wtmp
root@HaPriS(21:25:21)/tmp # ll /var/run/utmp
-rw-rw-r-- 1 root utmp 3.8K 2007-03-30 21:17 /var/run/utmp
root@HaPriS(21:25:26)/tmp # ll /var/log/btmp
-rw-rw-r-- 1 root utmp 2.3K 2007-03-30 21:17 /var/log/btmp
root@HaPriS(21:25:32)/tmp # ll /var/log/dmesg
-rw-r----- 1 root adm 19K 2007-03-30 16:02 /var/log/dmesg
root@HaPriS(21:25:35)/tmp # ll /var/log/auth.log
-rw-r----- 1 root adm 151M 2007-03-30 21:17 /var/log/auth.log
root@HaPriS(21:25:39)/tmp # ./whitecat -u haos
cat /tmp/tmpfileMaHQGE > /var/run/utmp
utmp cleaning            [ OK ]
cat /tmp/tmpfileQ9VTeQ > /var/log/wtmp
wtmp cleaning            [ OK ]
cat /tmp/tmpfile3Utq01 > /var/log/btmp
btmp cleaning            [ OK ]
lastlog cleaning        [ OK ]
Превышен лимит размера файла
root@HaPriS(21:27:22)/tmp # ll
итого 2.1G
-rw------- 1 root root  2.0G 2007-03-30 21:27 tmpfilejprkYd
-rwxr-xr-x 1 root root    15K 2007-03-30 21:25 whitecat
drwx------ 3 haos people 4.0K 2007-03-30 21:24 ksocket-haos/
srw-rw---- 1 haos audio    0 2007-03-30 21:22 alsa-dmix-3591-1175278934-156939
drwx------ 2 haos people 4.0K 2007-03-30 21:14 mc-haos/
-rw-r--r-- 1 root root  9.8K 2007-03-30 20:48 whitecat.c
drwx------ 2 haos people 4.0K 2007-03-30 16:03 orbit-haos/
drwx------ 2 haos people 4.0K 2007-03-30 16:03 kde-haos/
srwxr-xr-x 1 haos people    0 2007-03-30 16:02 mapping-haos
drwx------ 2 haos people 4.0K 2007-03-30 16:02 virtual-haos.eIVIzZ/
srwxr-xr-x 1 haos people    0 2007-03-30 16:02 xmms_haos.0
drwx------ 2 haos people 4.0K 2007-03-30 16:02 keyring-f9Fomt/
drwx------ 3 haos people 4.0K 2007-03-30 16:02 gconfd-haos/
root@HaPriS(21:27:32)/tmp #

Цитата:

И ещё раз глянь внимательно в /etc/fstab.
Код:

root@HaPriS(21:43:04)/tmp # df -h /var/log
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda8              41G  8.5G  31G  22% /
root@HaPriS(21:43:06)/tmp # mount |grep sda8
/dev/sda8 on / type ext2 (rw)
root@HaPriS(21:43:17)/tmp # cat /etc/fstab |grep sda8
/dev/sda8      /              ext2    defaults                    0      2
root@HaPriS(21:43:40)/tmp #

Сам временный файл заполнен каким-то нечитаемым мусором вперемешку с нулями. Может быть проблема в том, что lastlog почти полностью состоит из нулей(т.е. происходит поиск несуществующих записей)? Такой он уже после очистки клинером. Если там есть несколько записей о входивших пользователях, то очистка завершается успешно(хотя в процессе работы все равно создаются большие лог-файлы, но поменьше 2 гигов). 2х гиговый темп-файл создается именно при обработке lastlog, при обработке других я успел заметить цифры в 300 с лишним- 400 с лишним метров(и поменьше).


Время: 13:22