2000 г
Интернет сервер на OS/2
Илфат Кутдусов, Russian/2 projectOS/2.ru
Хотелось бы мне рассказать про Интернет сервер, собранный под OS/2.
Может быть, опыт моей работы кому-то поможет собрать полноценный сервер.
Через эту машину больше 100 человек выходят в интернет, забирают почту по POP3; ведется Primary DNS .
Конфигурация машины:
- Процессор: 2*PII-233
- Память: 128Mb
- SCSI: Adaptec 7880 на борту матери
- Video: Не особо важно. Все равно режим 640x480x16.
- Вроде S3Trio64V+ стоит.
- HDD: Seagate Chitah 4.3 Gb
- Ethernet: 3Com905 (не путать с 3Com905B - это еще то глюкало под ось)
- MultiPorts: Какая-то беспородная на 8 портов и с одни IRQ
OS/2 Warp Server RUS Advanced без единого фикса. Просто в свое время я сильно устал от экспериментов с фиксами. Главное - чтобы работало.
Установленный софт:
- OS/2 v3.0 Warp Server Advanced RUS v4.0 rev 8.234
- Perl: 5.005_53
- Fossil: SIO v1.60c 16 ports
- Шедулер: Rsched v.1.5.beta
Internet:
- EMX: v0.9c
- DNS: BIND 8.1.1
- Proxy: Squid v1.1.15
- SMTP: SendMail 1.3.14 (т.е. родной от оси)
- POP3: OS2Pops v2.02
- HTTP: Apache_1.3.3ruspl27.3-php-3.0.5-mysql
- SQL: Mini SQL Version 2.0.4.1
- FTP: FtpServer (Peter Moylan's FTP daemon) v0.60
- TFTP: TFTP Server 24/10/95 (родной от оси)
- SNTP: Time Server, Revision: 1.8
- SysLogD: SysLog демон от 03/06/95 (с хоббесов)
- TelnetD: Родной от оси. Для авторизации используется APLogin v1.00с
- NNTP: SQ2NN (too raw, ver. 0.1) (правда глубокая альфа, но на чтение работает)
Сбор статистики:
- Proxy: cache-stats-1.4 (Perl)
- Daily usage statistics for Netscape Proxy &
- Squid Cache - v1.4 961006
- SNMP: Сбор статистики с маршрутизаторов Cisco MRTG v2.5.3
Теперь как все это работает:
CONFIG.SYS: То что отличает от родного конфига
REM *********************************************
AUTOFAIL=YES
SUPPRESSPOPUPS=C
REIPL=ON
PROTECTONLY=YES
REM TimeSlice=32,256
REM TRAPDUMP=ON,E:
REM TRAPDUMP=RO,E:
REM DUMPPROCESS=E
SET STARTUP=C:
REM *********************************************
SET TZ=EKB-5UTC,3,-1,0,7200,10,-1,0,7200,3600
SET HOSTNAME=STATION
SET USE_HOSTS_FIRST=1
SET RESTARTOBJECTS=STARTUPFOLDERSONLY
SET EMXOPT=-h1536
SET PERL5LIB=C:/Utility/perl5/lib
SET SHELLHANDLESINC=5
Остальное согласно документациям программ.
StartUp Folder: OS2Pops;
StartUp.CMD:
:: ============= Подключение сетевых дисков и старт сервера
:: старт Варп-сервера
NET START SERVER
@if errorlevel 2 C:\IBMLAN\NETPROG\lserr.exe
logon userid /p:password /v:d
:: Логин в Novel-дерево
C:\netware\nwtools.exe C:\netware\poster.nws autoexit
:: ============== Запуск серверов и сервисов
:: Это старт SysLogD-демона
detach c:\Utility\SysLogD\syslogd.exe -d -f C:\Utility\SysLogD\syslog.cnf
:: ============== старт DNS-сервера
d:
cd \Bind\bin
detach named -cC:\MPTN\ETC\named.conf
:: ============== Старт Mini SQL сервера (он нужен для WWW-сервера
start /c D:\Public\mSQL2\BIN\dbstart.cmd
:: ============== Telnet-сервер на нестандартном порту 3333 для
:: ============== удаленного доступа до сервера
SET ATLPAC_PASSWD_FILE=C:\TCPIP\APLOGIN\PASSWD
SET ATLPAC_GREETING_FILE=C:\TCPIP\APLOGIN\GREETING.TXT
SET ATLPAC_WELCOME_FILE=C:\TCPIP\APLOGIN\WELCOME.TXT
SET ATLPAC_BADLOGIN_FILE=C:\TCPIP\APLOGIN\BADLOGIN.TXT
SET ATLPAC_LOG_FILE=c:\TCPIP\APLOGIN\MYLOG.TXT
start /c "Telnet by port 3333" telnetd -p 3333
:: ============== Синхронизация времени с тайм-сервером в интернете
detach daytime.exe -s -u -c 3600 128.173.14.71
:: ============== Запуск TimeServer-а.
:: Чтобы другие могли по мои часам синхронизироваться.
detach c:\utility\daytimed -S
:: ============== Запуск TFTP-сервера
cd \TFTP_Server
detach tftpd
:: ============== FTP-server
cd \FTPServer
Detach ftpd D3 F10000 L1
:: ============== NNTP-сервер
cd \bbs.os2\s2n
detach sq2nn
:: ============== Mail-server
Detach sendmail -bd -q30m -CC:\MPTN\ETC\sendmail.cf
:: ============== Proxy-сервер
cd \Squid
Detach squid.exe
:: ============== Запуск шедулера.
:: Он создает полы на адреса, создает флаги для сбора статистики
:: и многое другое. Возможности его довольно широки.
cd \bbs.os2\rsched
start /c "Shuduler" RSched.exe
Настройки фидошного софта приводить здесь не имеет смысла. Мои настройки никому, кроме меня, не интересны.
Так что загрузка достаточно большая. Правда на сегодняшний день работает только одна модемная линия, остальные забрали :(
Настройка Internet-софта.
Стек TCPIP
Эта машина имеет адрес 10.2.3.200 (внутренний), во внешнем мире (за файрволом) она видна под адресом 212.220.26.71
Вообщем-то ничего оригинального.
Файл \MPTN\BIN\SETUP.CMD выглядит примерно так:
route -fh
arp -f
ifconfig lo 127.0.0.1
ifconfig lan0 10.2.3.200 netmask 255.255.255.0
route add default 10.2.3.4 1
route add net 10 10.2.3.4 1
ipgate off
Т.е. ничего экзотического. Разве что запушен LoopBack интерфейс. Он необходим для многих програм.
DNS
В качестве DNS-сервера у меня работает Bind. Он держит одну сеть Класса А (10.0.0.0) и одну сеть класса C (интернетскую 212.220.26.0). Также является Secondary DNS-ом для еще одной сетки класса А (15.0.0.0). Работает он практически сразу и никаких проблем не создает. Пробежимся по настройкам:
=================== Named.conf =================================
options {
directory "c:/MPTN/etc/namedb";
pid-file "c:/MPTN/etc/PID/named.pid";
dump-file "c:/MPTN/etc/namedb/named.dump";
statistics-file "c:/MPTN/etc/namedb/named.stats";
forwarders { 195.38.32.2 ; 195.38.33.2 ; 195.58.1.145 ; 193.124.176.158 ; };
check-names master fail;
datasize 2M;
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
query-source address * port 53;
};
zone "localhost." IN {
type master;
file "localhost.zone";
check-names fail;
allow-update { none; };
allow-transfer { any; };
};
zone "0.0.127.in-addr.arpa." IN {
type master;
file "localhost.rev";
check-names fail;
allow-update { none; };
allow-transfer { any; };
};
zone "." IN {
type hint;
file "root.hint";
};
zone "ukib." IN {
type master;
file "sgb.dom";
};
zone "10.in-addr.arpa." IN {
type master;
file "10.in-addr.arpa";
};
zone "15.in-addr.arpa." IN {
type slave;
file "15.in-addr.arpa";
masters { 15.3.0.10;};
};
zone "sgb.ru." IN {
type master;
file "sgb.ru";
};
zone "26.220.212.in-addr.arpa." IN {
type master;
file "26.220.212.in-addr.arpa";
};
Остальные файлы я здесь приводить не буду, но часть, касающуюся мирового интернета - покажу:
========================= файл sgb.ru ==========================
$ORIGIN ru.
sgb IN SOA ns.sgb.ru.
postmaster.sgb.ru. (
19990210 ; Serial number for this data (yyyymmdd)
28800 ; Refresh value for secondary name servers
7200 ; Retry value for secondary name servers
604800 ; Expire value for secondary name servers
86400 ; Minimum TTL value
)
IN NS ns.sgb.ru.
IN NS ns.etel.ru.
IN NS ns1.etel.ru.
IN A 212.220.26.71
IN MX 20 mail.sgb.ru.
IN MX 30 ns.etel.ru.
IN MX 40 ns1.etel.ru.
$ORIGIN sgb.ru.
;********************************
;* Domain Address Information *
;********************************
dark
IN A 212.220.26.76
work IN CNAME dark
ns
IN A 212.220.26.71
mail
IN CNAME ns
www
IN CNAME ns
ftp
IN CNAME ns
binkd
IN CNAME ns
bbs
IN CNAME ns
irc
IN CNAME ns
ru2
IN CNAME ns
===================== файл 26.220.212.in-addr.arpa =================
;********************************
;* Start of Authority Records *
;********************************
$ORIGIN 26.220.212.in-addr.arpa.
@ IN
SOA ns.sgb.ru. postmaster.sgb.ru. (
19990211 ; Serial number for this data (yyyymmdd)
28800 ; Refresh value for secondary name servers
7200 ; Retry value for secondary name servers
604800 ; Expire value for secondary name servers
86400 ; Minimum TTL value
)
IN
NS ns.sgb.ru.
IN NS ns.etel.ru.
IN NS ns1.etel.ru.
$ORIGIN 26.220.212.in-addr.arpa.
71 IN PTR
ns.sgb.ru.
76 IN PTR
dark.sgb.ru.
Все до ужаса просто. С такими настройками все начинает сразу работать. Как видно из приведенного конфига - эта же машина является почтовым сервером для домена SGB.RU. Для приема почты с внешенго мира и отправки во внешний мир используется SendMail из комплекта поставки OS/2. Как он запускается - видно из строчки в StartUp.CMD. Здесь я приведу только строчки с конфига SendMail.CF, отличающиеся от конфига по умолчанию:
=============================================================
# Эти строчки в самом начале конфига
Dwsgb.ru
Cwsgb.ru
# нижеследующую строчку нужно подправить в конфиге
MLocal, P=D:\os2pops\popsmail.exe, F=lsm, S=10, R=20, A=D:\os2pops
$u $f
Mprog, P=xxx, A=Required by sendmail but unused
=============================================================
Все. Напомню, что в качестве POP3-сервера у меня работает OS2Pops, соответственно, и последние строчки в sendmail.cf настроены для него.
POP3-сервер никаких настроек не требует и начинает работать сразу после инсталяции. Только стоит добавить в настройках администратора для удаленного администрирования. Для администрирования я использую его родную програмку для удаленного администрирования, которая тоже не требует настроек. Разве что просить ввести пароль администратора и сервер администрирования.
Прокси-сервер.
Почему-то у многих возникают проблемы при его запуске. Единственная особенность. Должен быть поднят LoopBack интерфейс. У нас в банке установлено два таких прокси-сервера. Они работают в паре. Так же используется прокси-сервер провайдера. Приведу отличия от стандартных конфигов со своими комментариями:
======================= файл Squid.Conf ===================
# Это прокси-сервер провайдера. Если нет странички ни в своем кеше,
# ни на втором прокси-сервере, то эта страничка запрашивается у №;
# провадерского прокси-сервера. Замечу, что у провайдера тоже
# установлен Squid, но под юниксом.
cache_host 195.38.32.3 parent 3128
3130
# Это дружественный прокси-сервер на другой территории
cache_host 15.3.0.10 sibling
3128 3130
# Это локальный домен. Кешировать его тоже не надо.
local_domain ukib
# Это локальные IP-адреса.
# Сервера с этими адресами кешировать не надо.
local_ip 10.0.0.0
# Указывает количество демонов для DNS-резолвинга,
# стартуемых по умолчанию
dns_children 3
# Время, в течение которого открытые сокеты будут
# держаться за клиентом после обращения. Это значение нужно
# регулировать в зависимости от количества клиентов.
# У меня установлено 20 минут.
client_lifetime 20
acl localhost src 127.0.0.1/255.255.255.255
# Этот параметр определяет ACL-запись для администраторов.
# комментарии - ниже.
acl gate src 10.2.3.201/255.255.255.255
acl gate src 10.2.3.220/255.255.255.255
http_access allow manager gate
# Эту строчку нужно сразу же закомментировать, чтобы
# все кому не лень не пользовались вашим прокси-сервером
# acl all src 0.0.0.0/0.0.0.0
# Определяет адреса, которые могут пользоваться вашим
# прокси-сервером
acl all src 10.1.0.9/255.255.255.255
acl all src 10.1.0.10/255.255.255.255
acl all src 10.1.0.11/255.255.255.255
# Определяет сервера, с которых ничего не качается
# (нафиг нам наматывать трафик абсолютно ненужными банерами ;-) )
acl badsite url_regex ^http://www.banners.ru
acl badsite url_regex ^http://www.reklama.ru
acl badsite url_regex ^http://www.linkexchange.ru
acl badsite url_regex ^http://www.exchange.centre.ru
acl badsite url_regex ^http://www1.reklama.ru
http_access deny badsite
# Разрешает всем адресам группы "all"
# пользоваться вашим сервером
http_access allow all
icp_access allow all
# Определяет права администраторов для удаленного администрирования
# и пароль "_security_" для того, чтобы выключить прокси.
cachemgr_passwd _security_ shutdown
cachemgr_passwd none all
# Определяет уровень вложенности каталогов для кеша.
# Будет создано 8 каталогов, в каждом из которых еще 8 каталогов.
swap_level1_dirs 8
swap_level2_dirs 8
================================================================
Все. Первый запуск Squid-а нужно выполнить с параметром "-z" чтобы он создал все дерево каталогов для кеша. Если скинуть файл CacheMgr.EXE в "cgi-bin" каталог WWW-сервера, то по запросу к этой CGI-шке можно будет смотреть через браузер настройки и статистику прокси-сервера. Больше никаких особенностей нет.
HTTP-сервер.
В роли HTTP-сервера работает Apache. В особенности его настройки я не особо вдавался. Но то, что я использую, - расскажу. Apache обслуживает 2 виртуальных сервера с именами: www.sgb.ru и ru2.sgb.ru и внутренними адресами: www.ukib и ru2.ukib соответственно. В файле httpd.conf имеются следующие настройки на этот счет:
===================== файл httpd.conf ===================
NameVirtualHost 10.2.3.200
<VirtualHost 10.2.3.200>
ServerName www.ukib
DocumentRoot /WWW_Server/WWW
ErrorLog log/ww.error_log
TransferLog log/www.access_log
AccessConfig etc/www.access.conf
ResourceConfig etc/www.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName ru2.ukib
DocumentRoot /WWW_Server/merlin.itep.ru/~ru2main
ErrorLog log/ru2.error_log
TransferLog log/ru2.access_log
AccessConfig etc/ru2.access.conf
ResourceConfig etc/ru2.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName ru2.sgb.ru
DocumentRoot /WWW_Server/merlin.itep.ru/~ru2main
ErrorLog log/ru2.error_log
TransferLog log/ru2.access_log
AccessConfig etc/ru2.access.conf
ResourceConfig etc/ru2.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName www.sgb.ru
DocumentRoot /WWW_Server/WWW
ErrorLog log/www.error_log
TransferLog log/www.access_log
AccessConfig etc/www.access.conf
ResourceConfig etc/www.srm.conf
#Include conf/charset.conf
</VirtualHost>
==================================================================
В итоге если пользователь с внешнего мира набирает http://www.sgb.ru - то он попадает на один сервер. Если http://ru2.sgb.ru, то влетает на другой сервер. Для реализации этой возможности нужно, чтобы в DNS были строчки примерно такого вида:
ns
IN A 212.220.26.71
www
IN CNAME ns
ru2
IN CNAME ns
Вот собственно и все по поводу настроек Apache. Замечу, что для него тоже нужно, чтобы интерфес LoopBack был поднят.
Mini SQL.
SQL сервер для WWW-сервера особых настроек тоже, собственно, не имеет. Для его нормальной работы я сделал следующие настройки:
=========================== файл dbstart.cmd =====================
set user=kutdusov
rem set msql_debug=general:query:error:
detach D:\public\mSQL2\bin\msql2d
==================================================================
Предварительно нужно создать базу. У меня база уже была, поэтому я ее просто подключил примерно так:
msqladmin.exe
create Euxx
msql Euxx < euxx.msql
Где Euxx - это имя базы, euxx.msql - это та база, которую мне дали. Все!
TFTP. вообще никаких настроек не требует и работает только с тем каталогом, из которого стартовал. Я его использую для сохранения конфигурационных файлов и IOS_ов от маршрутизаторов Cisco.
FTP-сервер. Все прозрачно до безобразия. Даже не знаю, где могут возникнуть проблемы.
SNTP. Сервер и клиент служат для синхронизации своего времени по интернету и предоставления возможности внутренним клиентам синхронизировать свои часы по вашему компьютеру. Нужно установить переменную TZ в файле CONFIG.SYS:
SET TZ=EKB-5UTC,3,-1,0,7200,10,-1,0,7200,3600
Здесь все можно оставить так же, только в выделенном месте нужно указать свою разницу с гринвичем. Буквы значения не имеют. Главное, чтобы их было три. Можете, к примеру, для Москвы, указать такое начало это переменной
T=MSK-3UTC...
Остальные цифры отвечают за переход времени летнее/зимнее.
Клиент запускается такой строчкой:
detach daytime.exe -s -u -c 3600 128.173.14.71
Сервер запускается командой:
detach c:\utility\daytimed -S
Он просто обслуживает запросы клиентов и отдает им локальное время.
SysLogD.
Этот демон - служит для сбора статистики с других демонов или даже с других серверов. У меня он используется только для сбора статистики с DNS-сервера Bind. Выглядит его конфиг примерно так:
*.debug
CON
*.debug
D:\Log\SysLogD.log
named.*
D:\Log\Named.log
binkd.*
D:\Log\Binkd.log
local1.*
D:\Log\Cisco.log
По идее, он должен сбрасывать в разные логи по группа сообщений, но у меня он почему-то сбрасывает все в SysLogD.Log. Разбираться было некогда. К тому же, я его ставил для других задач - для сбора статистики с маршрутизаторов Cisco. Так он и остался. А когда поставил Bind, то был приятно удивлен, что Bind отправляет все логи в SysLogD.
TelnetD
Используется для удаленного доступа к серверу. Для авторизации используется APLogin v1.00с. Для его работы нужно определить несколько переменных окружения. Я их определяю в StartUp.CMD:
SET ATLPAC_PASSWD_FILE=C:\TCPIP\APLOGIN\PASSWD
SET ATLPAC_GREETING_FILE=C:\TCPIP\APLOGIN\GREETING.TXT
SET ATLPAC_WELCOME_FILE=C:\TCPIP\APLOGIN\WELCOME.TXT
SET ATLPAC_BADLOGIN_FILE=C:\TCPIP\APLOGIN\BADLOGIN.TXT
SET ATLPAC_LOG_FILE=c:\TCPIP\APLOGIN\MYLOG.TXT
Дальше программой adduser.exe создаете пользователей. Файл APLOGIN.EXE копируете в каталог \TCPIP\BIN под именем TNLogin.EXE. Все. Следует заметить, что запускать через Detach демона не стоит. Так как в этом случае вы не сможете, подсоединившись, запускать другие программы, к примеру, File Commander или Golded. Я его запускаю строчкой:
start /c telnetd.exe -p 3333
Порт можно не указывать. Но в этом случае он у вас будет сидеть на порту по умолчанию, т.е. 23. Неприятная особенность. Когда вы логинитесь к этому демону, то если с первого раза неправильно ввели пароль, то дальнейшие попытки вам не помогут. Разбираться мне было лень. Все, в общем-то работает. Удаленно я к нему логинюсь командой:
telnet -t ansi 10.2.3.200 3333
После авторизации попадаю в командную строчку и спокойно могу запустить FC или Golded или любую другую VIO программу.
После прибивания этого телнет-соединения умирают все задачи, запущенные из этой сессии, кроме тех, которые запускались через Detach.
Шедулер.
Rsched v.1.5.beta. Также никаких особых тонкостей при настройке не имеет. Сетап спокойно запускается удаленно из-под телнета. Сам демон спокойно перечитывает измененный конфиг. Только с его запуском такая же тонкость, как и с TelnetD. Его нужно запускать минимизированным, а не через Detach.
Сбор статистики с прокси-сервера cache-stats-1.4 (Perl).
Для сбора статистики у меня используется следующий командный файл:
=================== Файл Squid_Log.CMD ============================
/* */
'@Echo off'
Call rxfuncadd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs
/* Trace A */
/* Signal ON Syntax */
Dir.WWW = 'D:\WWW_Server\Squid\UKIB'
Dir.Squid = 'D:\Squid'
Dir.Logs = Dir.Squid'\Logs'
Dir.Archive = Dir.WWW'\'DATE('S')-1
Prog='SQUID.EXE'
File.1 = 'access_log'
File.2 = 'cache_log'
File.3 = 'store_log'
Call Kill_Squid
'md' Dir.Archive
'copy' Dir.Logs'\*.*' Dir.Archive
'del' Dir.Logs'\'File.1
'del' Dir.Logs'\'File.2
'del' Dir.Logs'\'File.3
'start /c' Dir.Squid'\SQ.CMD'
if Directory( Dir.Archive ) = Dir.Archive then
Call Analizer
Else
Return
'start /c' Dir.Squid'\cache-stats-1.4\SquidStats.CMD'
Dir.Archive
Return
/* ****************************************************************/
Analizer:
NUMERIC FORM ENGINEERING
NUMERIC DIGITS 5
IN_Log = 'access_log'
OutLog = 'Proxy.Log'
Dummy = Stream( IN_Log, 'C', 'Open' )
Linein( IN_Log,,0 )
i=1
Do While Chars( IN_Log ) > 0
tn = LineIn( IN_Log )
Time = Word( tn, 1 )
Size = Word( tn, 2 )
Addr = Word( tn, 3 )
Packet = Word( tn, 4 )
Var = Word( tn, 5 )
Command = Word( tn, 6 )
File = Word( tn, 7 )
Call LineOut 'Proxy.'Addr, tn
End
Dummy = Stream( IN_Log, 'C', 'Close' )
/* 'del' IN_Log */
Call SysFileTree 'Proxy.*', 'IN_File', 'FO'
Say IN_File.0
do i=1 to IN_File.0 by 1
Say IN_File.i
D_Size = 0
Tabs = ''
demmy = Stream( IN_File.i, 'C', 'Close' )
Do While Chars( IN_File.i ) > 0
tn = LineIn( IN_File.i )
Size = Word( tn, 2 )
Addr = Word( tn, 3 )
Tmp = D_Size + Size
D_Size = Tmp
end
DownLoad = D_Size/(1024*1024)
if DownLoad<10 then Tabs = Tabs' '
if DownLoad<100 then Tabs = Tabs' '
if DownLoad<1000 then Tabs = Tabs' '
if DownLoad<10000 then Tabs = Tabs' '
Say Addr': DownLoad' Tabs''DownLoad 'Mb.'
Call LineOut OutLog, Addr': DownLoad' Tabs''DownLoad'Mb.'
end
Dummy = Stream( OutLog, 'C', 'Close' )
Return
Kill_Squid:
do while (queued()>0) /* Clear queue */
pull .
end
DelProg = Prog
do Forever
'@go |grep "SQUID.EXE"|rxqueue'
if queued()=0 then leave
pull tmp
tn = strip(tmp)
pid = word(tn,1)
prog = word(tn,8)
Say 'Kill program'
prog 'PID='pid
'go -k' pid
Call SysSleep(5)
do while (queued()>0)
/* Clear queue */
pull .
end
end
Return
Syntax: /* Обработка
исключительных ситуаций и ошибок в программе */
SS = SIGL
LogLine = '! Ошибка в программе TOSSING.CMD в строке 'SS'!'
Call WriteLog
LogLine = 'Строка:' SourceLine(SS)
Call WriteLog
Return
=========================== Файл SquidStats.CMD =================
/* */
parse arg Location
'@Echo off'
Call rxfuncadd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs
/* Trace A */
'set BEGINLIBPATH=C:\Utility\Perl5;'
'set PERL5LIB=C:/Utility/perl5/lib'
BaseDir = 'D:\Squid\cache-stats-1.4'
HOST='proxy.sgb.ru'
TOPN=50
/* D = DATE( 'S' )-1 */
LOGDIR=Location
D = Right( Location, 8 )
WWWDIR=LOGDIR
LOGFILE=LOGDIR'\access_log'
SUMFILE=WWWDIR'\summary.'D
WWWFILE=WWWDIR'\'D'.html'
if WWWDIR <> Directory( WWWDIR ) then
'mkdir' WWWDIR
Dummy = Directory( BaseDir )
Say "Processing $LOGFILE ..."
Say "Running access-extract.pl ..."
'perl access-extract.pl <' LOGFILE '>' SUMFILE
Dummy = Directory( BaseDir )
Say "Running access-extract-urls.pl ..."
'perl access-extract-urls.pl <' LOGFILE '>>' SUMFILE
Dummy = Directory( BaseDir )
Say "Generating $WWWFILE ..."
Say "Running access-summary.pl ..."
'perl access-summary.pl -m' HOST '-n' TOPN '-H <' SUMFILE '>' WWWFILE
Return
В итоге получаем кучу логов в каталоге, указаном переменной Dir.WWW, часть из которых представляют текстовые файлы, а часть HTML_страницы, доступные с локального WWW. Часть тектсовых логов делается моим куском на рексе, где приведено по файлу на пользователя - куда он лазил и один файл, где приведен об'ем скаченных мегабайт каждым клиентом.
Забыл рассказать про Perl. Хотя его установка никаких проблем вообще не должна вызывать. Все спокойно берется либо с ftp://oksoft.rsl.ru/pub/os2, либо c ftp.cdrom.com. И ставится, не задавая никаких глупых вопросов, кроме указания каталогов куда его ставить.
Сбор статистики с маршрутизаторов Cisco MRTG v2.5.3.
Для начала нужно прописать на маршрутизаторе "Community".
Это делается следующей последовательностью команд:
enable (вход в привилегированный режим)
configure terminal (режим конфигурирования)
snmp-server community [Word]
(установка Community. "Word" ваше
ключевое слово, без скобок, конечно)
Все. Дальше создаете конфиг для MRTG командой:
perl cfgmaker [Word]@[Host] > [Config_File.cfg]
Где:
Word Ключевое слово, указанное выше, при
конфигурировании cisco
Host Адрес или имя маршрутизатора Cisco, с которого
нужно будет снимать статистику
Config_File.cfgсоздаваемый конфигурационный файл для этого хоста
После этого в этом файле ставить первой строчкой такую:
WorkDir: d:\WWW\10.1.0.1
Это у вас будет каталог, куда будет сваливаться статистика с этого хоста. У меня этот каталог доступен с WWW-сервера.
Можете в этом файле еще навести маникюр получаемой странички, чтобы она выглядела красивее.
Далее создаете командный файл примерно следующего содержания:
c:\utility\Perl5\Perl_ mrtg 10.1.0.1.cfg
c:\utility\Perl5\Perl_ mrtg 10.2.3.1.cfg
c:\utility\Perl5\Perl_ mrtg 10.2.3.4.cfg
Где последним параметром прописываете тот хост, с которого нужно собирать статистику. Далее настраиваете шудулер, чтобы он запускал этот командник,например, каждые 5 минут.
Рисуете свою красивую страничку с ссылками на полученные странички и радуетесь сделанной работе ;-) Постепенно будет накапливаться статистика, а вы будете видеть в WWW-браузере постоянно обновляемую статистику по интерфейсам маршрутизаторов.
PS: Мне бы хотелось еще собирать такую же статистику с сервера OS/2. Но пока я не знаю как это сделать :(
Дальнейшее намечаемое развитие:
- Установка нормального SockS-сервера. Это будет либо Socks от NEC, либо Delegate.
- Установка стека IP не меньше WR08610 с установкой файрвола на нем, но пока не хочется трогать. Все ведь и так работает ;-)
- Подведение всех демонов под SysLogD и единую централизованную систему запуска/остановки/перезапуска работающих демонов.
Все! Еще добавлю, что все это хозяйство работает без особых глюков уже почти 2 года.