вопрос по использованиб команд из Netware Unix environment

Обсуждение технических вопросов по продуктам Novell

вопрос по использованиб команд из Netware Unix environment

Сообщение Dimerson » 25 дек 2008, 18:01

В общем хотел спросить у all - возможно ли вызывать команды эти (суть NLM мелкие) напрямую а не не из bash.nlm ?

Мне это надо для успешной работы sarg.nlm (собран из сырцов OpenWatcom 1.7 под LIBC) для анализа логов BM.

Не нужны мне монстрообразные анализаторы с лимитами и прописываниме нарушителей в дерево. Прога тупо запускаемая раз в день из кронтаб после ротации лога в полночь и пишушая HTML в каталог для просмотра шефом на предмет кризиса (и так в месяц получается > 200 тыр в месяц за траффик и это при том что народ сидит на проксе загнанной в 2.5 мбит шейпер просто народу > 100 чел)

Так вот - там напрямую вызвается например rm для очистки файлов/каталогов - то есть :

что-то вроде
sprintf(tmp3,"rm -rf %s",warea);
system(tmp3);

вот и спрашиваю - мона ли дергать rm.nlm напрямую ?

P.S. GCC Cross-compiler на forge.novell.com протух уже - давно не обновлялся посему вопрос - чем сейчас NLM собирают ?

Собрал я его ваткомом правда долго парился с wlink - там это не очень хорошо описано для LIBC - для CLIB все отлажено сто лет но портить под CLIB это удовольствие ниже среднего ибо отсутствие
в библиотеке bzero можно обойти через #define bzero(..) memset (...),
то например отсутствие snprintf более веселый вариант.

P.S. Пришлось добавить в netware.imp CurrentProcess, _IsTable и что-то еще (это с thin либой).

P.P.S. Никто не собирал что-нибудь немаленькое = какой размер стека (порядок) получается ? У меня даже с 256K лепило Watcom RT: Stack Overflow ... пересобрал с 1024K все ок .

Никто кстати не знает как у свежих GCC4 со сборкой NLM ? Единственное правда что веселит это руками работать за ./configure :)
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Михаил Григорьев » 26 дек 2008, 10:44

Я еще в 2005 году писал NLM'ки в среде MetroWerks CodeWarrior
http://support.novell.com/techcenter/ar ... 90101.html
http://developer.novell.com/wiki/index. ... odeWarrior
http://developer.novell.com/ndk/cwpdkc.htm

GCC под NW как-то не пробовал, а может он и не умеет под NW собирать NLM'ки
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение Dimerson » 29 дек 2008, 18:00

Watcom был заюзан успешно :

system begin mynetware
option osname='NetWare LibC'
format novell ^
Op Stack = 256k
option nodefault
option caseexact
Option Start = _LibCPrelude
Option Exit = _LibCPostlude
Option ScreenName 'DEFAULT'
File E:\WATCOM\ndk/libc/imports/libcpre.obj
Import @E:\WATCOM\ndk/libc/imports/libc.imp
Import @E:\WATCOM\ndk/libc/imports/netware.imp
Module libc
File E:\WATCOM\lib386\netware\libc3sl.lib

sarg.nlm собрался но это слабо помогло так как он использует не только rm ( свой NLM для rm-rf был сделан правда CLIB Netware работает не так гладко как в Cygwin) но и sort . Посему было решено
посмотреть другие анализаторы логов SQUID.

FREE-SA . Тут заморочки с fork'ами тоже был толожен на место.

lightsquid. Все на перле - с ним получилось все хорошо.

И так:
Распаковать все lighstquid tar.gz в sys:/perl/lightsquid
Правим конфиг SYS:\perl\lightsquid\lightsquid.cfg

$cfgpath ="SYS:/perl/lightsquid";
$tplpath ="SYS:/perl/lightsquid/tpl";
$langpath ="SYS:/perl/lightsquid/lang";
$reportpath ="LOGS:/PROXY/REPORTS";
$logpath ="LOGS:/PROXY/LOG/HTTP/COMMON";
$ip2namepath ="SYS:/perl/lightsquid/ip2name";
$debug = 1;
$squidlogtype = 1;
$graphreport = 0;

(либа для графики (GD в виде NLM статически слинкованного со всем чем надо) бывает она скачиваема и если докинуть либы в перл то оно тоже работает - графики проверил - только накой оно).

Берем для теста COMMON лог бордюра за какую-нибудь дату и копируем его в том же каталоге с логами в access.log (для тесту).

Запускаем на консоли сервера sys:\perl\lightsquid\check-setup.pl
Видим сообщение
all checks passed, now try access to cgi part in browser

В данном случае бордер делает только коммон логи и на отдельном томе . Ночью в 12:00 он бросает вчерашний лог и начинает новый.

посему в крон после полуночи добавляем например такую обработку:
1. переименовать вчерашний лог в access.log
2. пускать sys:\perl\lightsquid\lightparser.pl
3. далее делаем с обработанным логом что надо - удаляем зипаем или что душе угодно.

И так у нас в LOGS:/PROXY/REPORTS лежат готовые репорты для отображения CGI скриптом.

Должен сказать что по обьему репорты за ту же дату у LightSquid намного компактнее : например 58 MB у SARG и 1,6MB у LightSquid.

Далее добавляем в конец sys:\apache2\conf\httpd.conf

<IfModule>
CGIMAPExtension sys:/perl/Perlcgi/Perlcgi.nlm .cgi
Alias /lightsquid/ sys:/perl/lightsquid/
<Location>
SetHandler cgi-script
Options +ExecCGI
AuthType Basic
AuthName "Private Content. Only Autorized Users!"
AuthUserFile "SYS:/perl/lightsquid/.htpasswd"
require valid-user
AllowOverride None
</Location>
</IfModule>


При этом строку Include sys:/apache2/conf/mod_perl.conf надо закомментить.

Рестартуем апач:
ap2webrs
на консоли севера

Почему не юзать MOD_PERL ? Я так понял, дело в том что для mod-perl надо более строго писать скритпы (переменные, процедуры use sctrict etc) - а с обычным интерфейсом Apache2 для перла все работает (с mod_perl не заупскается - ругань на неопределенные процедуры и все такое).

Создаем файл SYS:/perl/lightsquid/.htpasswd
для этого на консоли запсутим

load sys:apache\bin\htpasswd -c SYS:/perl/lightsquid/.htpasswd USERNAME и по запросу вбить пароь.

после этого репорты LightSquid доступны как

http://BORDER-MANAGER-IP-OR-HOSTNAME/li ... /index.cgi

после авторизации.

Таким образом задача прикрутить к борюру вебморду для контроля была решена с минимумом затрат и без привлечения тяжелой артиллерии в виде SQL для храннения логов и дополнительных серверов. Думаю что то же самое заработает и на NW6 ( apache 1.3 + Perl 5.8 ). В данном случае это был NW65SP8 ( Apache2.0.63+Perl 5.8.4 ).

P.S. Чуть не забыл. По дефолту lightparser.pl читает лог файл из вывода cat, нам это не подит посему в данном файле комментим одну строку и разкомментриуем другую:

было
#open FF, "$logpath\\$filename" || die "can't access log file\n";
open FF, "$catname $logpath/$filename|" || die "can't access log file\n";

стало
open FF, "$logpath\\$filename" || die "can't access log file\n";
#open FF, "$catname $logpath/$filename|" || die "can't access log file\n";

хух.

Всех с наступающим новым годом.

P.P.S. для энтузиастов если нужны графические репорты то брать GD
http://www.gknw.net:80/phpbb/viewtopic.php?t=344 распаковать из
GD-2.35_perl-5.8.4-nw.zip только содержимое каталога /perl/lib на том SYS:.

P.P.P.S. на косметические сообщения на консоли
Module LIBPERL.NLM is being referenced
You must unload PERLCGI.NLM before you can unload LIBPERL.NLM
внимания не обращать.
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Михаил Григорьев » 30 дек 2008, 16:36

Анализатор логов на Perl или на CGI - это не модно нынче, такие вещи писали во времена седого доса в виду ленивости писать все на СИ и в виду маленьких объемов анализируемых логов.

Рал-тайм статистика все же намного лучше!
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение Dimerson » 30 дек 2008, 17:24

там оно через анус сделано - через CSAUDIT или через Novell Auidit.
и фронтенда нетути для него человечьего :(((

Надо было индусам доплатить имхо (хотя наверное буржуи трафик не считают совсем).

А про обьемы - у меня в день ну 60-100 метров COMMON лога - обработка его lightparser.pl в пределах 1-2 минут

SARG парится дольше раза в 2-3

а по поводу анализатора на СИ - я уже говорил что SARG и Free-SA используют внешние SORT,CAT etc и Free-SA писан с форками. То есть с минимумом усилий не портануть.

И libc кривоватая - вещи писанные и работающие под cygwin отказываются работать под libc ... типа (все собрано без поддержки POSIX путей).

rmdir() работает
unlink() работает
а remove() упорно не работает тут же возвращая 1.
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24