Как собирать сетевую статистику Андрей Бирюков Листинг 1. Сценарий, собирающий статистику по протоколам strComputer = "." // используется локальная машина Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") // объекты, необходимые для запуска сценария Set colItems = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_TCPIP_TCP").objectSet // объект, с помощью которого собираются данные по TCP Set colItems1 = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_TCPIP_UDP").objectSet // объект, с помощью которого собираются данные по UDP Set colItems2 = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_TCPIP_IP").objectSet // объект, с помощью которого собираются данные по IP objRefresher.Refresh // обновление счетчиков Const xlDiagonalDown = 5 Const xlDiagonalUp = 6 Const xlNone = -4142 Const xlContinuous = 1 Const xlThin = 4 Const xlThick = 4 Const xlEdgeLeft = 7 Const xlEdgeTop = 8 Const xlEdgeBottom = 9 Const xlEdgeRight = 10 Const xlInsideVertical = 11 Const xlInsideHorizontal = 12 Const xlAutomatic = -4105 Const xlCenter = -4108 Const ForReading = 1 Const ForWriting = 5 // набор констант, необходимых для создания документа Excel Set oE = CreateObject("Excel.Application") oE.Visible = false oE.Workbooks.Add // создаем новый документ Excel oE.DisplayAlerts = False 'oE.Sheets(4).Delete oE.DisplayAlerts = True // определяем количество страниц Set s = oE.Sheets(1) s.Name = "Статистика по TCP" // название для первой страницы Set s1 = oE.Sheets(2) s1.Name = "Статистика по UDP" // название для второй страницы Set s2 = oE.Sheets(3) s2.Name = "Статистика по IP" // название для третьей страницы // далее перечисляются названия столбцов s.Rows(1).RowHeight = 2 * s.StandardHeight s.Cells(1,1) = "Статистика по протоколу TCP" s.Cells(2,1) = "Время" s.Cells(2,2) = "Connection Failures" s.Cells(2,3) = "Connection Active" s.Cells(2,4) = "Connection Established" s.Cells(2,5) = "Connection Passive" s.Cells(2,6) = "Connection Reset" s.Cells(2,7) = "Segments Per Second" s.Cells(2,8) = "Segments Received Per Second" s.Cells(2,9) = "Segments Retransmited Per Second" s.Cells(2,10) = "Segments Sent Per Second" s.Columns("A:B").Columns.AutoFit With s.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With s1.Rows(1).RowHeight = 2 * s1.StandardHeight s1.Cells(1,1) = "Статистика по протоколу UDP" s1.Cells(2,1) = "Время" s1.Cells(2,2) = "Datagrams No Port Per Second" s1.Cells(2,3) = "Datagrams Per Second" s1.Cells(2,4) = "Datagrams Received Errors" s1.Cells(2,5) = "Datagrams Received Per Second" s1.Columns("A:B").Columns.AutoFit With s1.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With s2.Rows(1).RowHeight = 2 * s2.StandardHeight s2.Cells(1,1) = "Статистика по протоколу IP" s2.Cells(2,1) = "Время" s2.Cells(2,2) = "Datagrams Forwarded Per Second" s2.Cells(2,3) = "Datagrams Discarded" s2.Cells(2,4) = "Datagrams Received Header Errors" s2.Cells(2,5) = "Datagrams Received Per Second" s2.Cells(2,6) = "Datagrams Received Unknown port" s2.Cells(2,7) = "Datagrams Sent Per Second" s2.Cells(2,8) = "Fragments Per Second" s2.Cells(2,9) = "Fragments Failures" s2.Cells(2,10) = "Fragments Datagrams Per Second" s2.Cells(2,11) = "Fragments Reassembly Failures" s2.Cells(2,12) = "Fragments Created Per Second" s2.Cells(2,13) = "Fragments Reassembly Per Second" s2.Cells(2,14) = "Fragments received Per Second" s2.Columns("A:B").Columns.AutoFit With s2.Range("A1:B1") .MergeCells = True .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Font.Size=14 End With // в данном цикле производится сбор статистических данных f=3 // начинается заполнение с третьей строки For i = 1 to 5 // в данном примере пять итераций, в реальном сценарии необходимо намного больше // каждый элемент для статистики по TCP For Each objItem in colItems // дата и времы занесения записи s.Cells(f,1)=Now s.Cells(f,2)=objItem.ConnectionFailures s.Cells(f,3)=objItem.ConnectionsActive s.Cells(f,4)=objItem.ConnectionsEstablished s.Cells(f,5)=objItem.ConnectionsPassive s.Cells(f,6)=objItem.ConnectionsReset s.Cells(f,7)=objItem.SegmentsPersec s.Cells(f,8)=objItem.SegmentsReceivedPersec s.Cells(f,9)= ? objItem.SegmentsRetransmittedPersec s.Cells(f,10)=objItem.SegmentsSentPersec Next // каждый элемент для статистики по UDP For Each objItem in colItems1 s1.Cells(f,1)=Now s1.Cells(f,2)=objItem.DatagramsNoPortPersec s1.Cells(f,3)=objItem.DatagramsPersec s1.Cells(f,4)=objItem.DatagramsReceivedErrors s1.Cells(f,5)=objItem.DatagramsReceivedPersec s1.Cells(f,6)=objItem.DatagramsSentPersec Next // каждый элемент для статистики по IP For Each objItem in colItems2 s2.Cells(f,1)=Now s2.Cells(f,2)=objItem.DatagramsForwardedPersec s2.Cells(f,3)=objItem.DatagramsOutboundDiscarded s2.Cells(f,4)=objItem.DatagramsOutboundNoRoute s2.Cells(f,5)=objItem.DatagramsPersec s2.Cells(f,6)=objItem.DatagramsReceivedAddressErrors s2.Cells(f,7)=objItem.DatagramsReceivedDeliveredPersec s2.Cells(f,8)=objItem.DatagramsReceivedDiscarded s2.Cells(f,9)=objItem.DatagramsReceivedHeaderErrors s2.Cells(f,10)=objItem.DatagramsReceivedPersec s2.Cells(f,11)=objItem.DatagramsReceivedUnknownProtocol s2.Cells(f,12)=objItem.DatagramsSentPersec s2.Cells(f,13)=objItem.FragmentationFailures s2.Cells(f,14)=objItem.FragmentedDatagramsPersec s2.Cells(f,15)=objItem.FragmentsReassembledPersec s2.Cells(f,16)=objItem.FragmentsReceivedPersec Next WScript.Sleep 60000 // пауза на 60 секунд objRefresher.Refresh f=f+1 Next oE.DisplayAlerts = False // сохранение документа Excel oE.ActiveWorkbook.SaveAs "result" oE.DisplayAlerts = True oE.Quit // закрытие Excel ----------------------------------------------------------------------------------------------------------------- Создаем адресную книгу на базе OpenLDAP Сергей Алаев # cd /usr/ports/databases/unixODBC # make && make install # cd /usr/ports/databases/openldap23-client # make && make install # cd ../openldap23-server # make WITH_ODBC=YES WITH_ODBC_TYPE=unixodbc # make install # chown ldap:ldap /usr/local/etc/openldap/slapd.conf # mcedit /usr/local/etc/openldap/slapd.conf # Подключаем необходимые схемы include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema #Указываем путь для файлов pid и args pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args # Определяем порядок доступа к сущностям # Разрешаем доступ к службе каталогов LDAP только авторизированным пользователям access to * by users read by self read by anonymous auth # Путь к модулю sql modulepath /usr/local/libexec/openldap moduleload back_sql.so ######################################################### # sql database definitions ######################################################### # Определяем настройки для соединения с PostgreSQL-сервером database sql suffix "o=myorg" rootdn "cn=root,o=myorg" rootpw {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== # Имя источника данных dbname PostgreSQL # Имя пользователя для соединения с PostgreSQL dbuser ldap # Пароль для данного пользователя dbpasswd {MD5}4QrcOUm6Wau+VuBX8g+IPg== insentry_stmt "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select nextval('ldap_entries_id_seq')),?,?,?,?)" upper_func "upper" strcast_func "text" concat_pattern "?||?" has_ldapinfo_dn_ru no # При использовании модуля sql-индексы указывать не нужно # Поиск автоматически можно вести по всем атрибутам, используемым в LDAP-дереве # slappasswd –h {MD5} –s secret # slappasswd –h {MD5} –s 123456 # /usr/local/etc/rc.d/slapd.sh start stop restart status # mcedit /etc/rc.conf slapd_enable="YES" slapd_flags="-u ldap –g ldap –h ldap://192.168.7.1" # cd /usr/ports/databases/postgresql80-client # make && make install # cd /usr/ports/databases/postgresql80-server # make && make install # cd /var/db # mkdir pgsql # chmod 700 pgsql && chown pgsql:pgsql pgsql # /usr/local/bin/sudo –u pgsql /usr/local/bin/initdb –-username=pgsql –-pgdata=/var/db/pgsql # mcedit /usr/local/etc/sudoers root ALL=(pgsql) ALL # mcedit /etc/rc.conf postgresql_enable="YES" postgresql_user="pgsql" postgresql_data="/var/db/pgsql" # mcedit /var/db/pgsql/postgresql.conf listen_addresses='localhost' tcpip_socket = true virtual_host = '127.0.0.1' # /usr/local/etc/rc.d/010.pgsql.sh start # mcedit /usr/local/etc/odbcinst.ini [PostgreSQL] Description = PostgreSQL driver for Linux & Win32 Driver = /usr/local/lib/libodbcpsql.so Setup = /usr/local/lib/libodbcpsqlS.so FileUsage = 1 # mcedit /usr/local/etc/odbc.ini [PostgreSQL] Description = Test to Postgres Driver = PostgreSQL Trace = Yes TraceFile = sql.log Database = ldap Servername = 127.0.0.1 UserName = Password = Port = 5432 Protocol = 6.4 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No ConnSettings = # psql –h 127.0.0.1 -d template1 -U pgsql template1=# CREATE USER ldap WITH SYSID 100 PASSWORD '123456' NOCREATEDB NOCREATEUSER; template1=# CREATE DATABASE ldap WITH OWNER = ldap ENCODING = 'UNICODE'; # psql –h 127.0.0.1 –d ldap –U ldap –p 5432 –W < /usr/local/scripts/main.sql # sockstat -4 # cd /usr/ports/net/phpldapadmin # make && make install # apachectl start # cd /usr/local/www/phpldapadmin/config # mv config.php.example config.php # mcedit config.php $ldapservers->SetValue($i,'server','host','192.168.7.1'); dn: o=myorg objectclass: organization o: myorg ----------------------------------------------------------------------------------------------------------------- Linux-VServer: настраиваем виртуальные серверы Дмитрий Столяров # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2 # wget http://ftp.linux-vserver.org/pub/kernel/vs2.0/patch-2.6.17.13-vs2.0.2.1.diff.bz2 # tar -xjf linux-2.6.17.13.tar.bz2 # bunzip2 patch-2.6.17.13-vs2.0.2.1.diff.bz2 # cd linux-2.6.17.13 # patch -p1 < ../patch-2.6.17.13-vs2.0.2.1.diff # make menuconfig # make bzImage modules modules_install install # wget http://ftp.linux-vserver.org/pub/utils/util-vserver/util-vserver-0.30.210.tar.bz2 # tar -xjf util-vserver-0.30.210.tar.bz2 # cd util-vserver-0.30.210 # ./configure --prefix=/usr/local/vserver –with-vrootdir=/var/vservers # make # make install # PATH=$PATH:/usr/local/vserver/sbin # MANPATH=$MANPATH:/usr/local/vserver/man # mount /dev/sda2 /var/ -o tagxid,attrs /dev/sda2 /var reiserfs tagxid,attrs 1 1 # mkdir /var/vservers # /usr/local/vserver/sbin/setattr --barrier /var/vservers/ # /usr/local/vserver/etc/init.d/vprocunhide start # echo 'kernel.vshelper =/usr/local/vserver/lib/util-vserver/vshelper' >> /etc/sysctl.conf # sysctl -p # vserver-info # wget http://distfiles.gentoo.org/experimental/x86/vserver/stage3-i686-20060317.tar.bz2 # mkdir /usr/src/stage3-vserver # tar -xjf stage3-i686-20060317.tar.bz2 -C /usr/src/stage3-vserver # mkdir /usr/src/stage3-vserver/usr/portage # wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2 # tar -xjf portage-latest.tar.bz2 -C /usr # vserver testvps build -m skeleton --context 5 --initstyle plain # cp /usr/src/stage3-vserver/* /var/vservers/testvps/ -pPR # cat >> /usr/local/vserver/etc/vservers/testvps/fstab /usr/portage /usr/portage none bind,ro 0 0 /usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0 # vserver testvps start # vserver-stat # vserver testvps enter # cd /usr/local/vserver/etc/vservers/testvps/interfaces # mkdir 0 # cd 0/ # echo 'eth0' > dev # echo 'testvps' > name # echo '192.168.0.2' > ip # echo '24' > prefix # vserver testvps restart # ip addr | grep 192.168.0.1 # vserver testvps enter # ifconfig # cd /usr/local/vserver/etc/vservers/testvps/ # mkdir dlimits # mkdir dlimits/0 # cd dlimits/0 # echo '/var/vservers/testvps' > directory # echo '100000' > inodes_total # echo '5242880' > space_total # echo '5' > reserved # df -h # vserver testvps stop # chxid -c 5 -R /var/vservers/testvps # vserver testvps start # df -h # cd /usr/local/vserver/etc/vservers/testvps/ # mkdir rlimits # cd rlimits 7 32 500 200 1000 string ----------------------------------------------------------------------------------------------------------------- Как настроить библиотеку SASL для совместной работы c Kerberos Михаил Кондрин --enable-login \ --enable-ntpl \ --disable-otp \ --disable-anon \ --enable-ldapdb=no --enable-sql=no /sbin/ifconfig dummy0 192.168.10.1 netmask 255.255.255.0 up $./server -p 3001 -s host -m GSSAPI ./client -p 3001 -s host -m GSSAPI kdc.myrealm.ru chown -R root.kerberos /var/state/saslauthd/ chmod -R 755 /var/state/saslauthd/ /usr/sbin/saslauthd -a kerberos5 -d pwcheck_method:saslauthd mech_list:gssapi plain ----------------------------------------------------------------------------------------------------------------- Защищаем корпоративную почту с SecExMail Gate Cергей Яремчук info@test.com administrations support@test.com administrations sales@test.com sales fedja@test.com sales ----------------------------------------------------------------------------------------------------------------- bugtraq, стр. 73 Options FollowSymLinks MultiViews Indexes AllowOverride None php_admin_flag safe_mode 1 php_admin_value open_basedir /usr/home/frajer/public_html/ http://[host]:411/cgi-bin/Redirect.bat?file=%7C..\..\..\..\..\..\....\..\[file] ----------------------------------------------------------------------------------------------------------------- Python – в школу! Сергей Супрунов print ‘Ура! Я программирую!!!’ message = ‘Ура! Я использую переменные!!!’ print message ----------------------------------------------------------------------------------------------------------------- Полезные советы по Python Сергей Супрунов >>> def tostr(a, b): ... return a + b ... >>> list = [1,2,3,4,5] >>> map(str, list) >>> filter(lambda i: i>3, list) >>> reduce(tostr, list) >>> reduce(tostr, map(str, list)) >>> a = lambda a,b: a*a + a*b + b*b >>> a(2,3) # аргументы 2 -> a, 3 -> b >>> (lambda a,b: a+b)(2,3) #s = '' #for i in xrange(1000000): # s += str(i) s = ''.join([str(i) for i in xrange(1000000)]) for i in xrange(10000000): . . . . list = [] func = list.append for i in xrange(5000000): # list.append(i) func(i) ----------------------------------------------------------------------------------------------------------------- Многоядерные процессоры и проблемы, ими порождаемые, в ОС семейства NT Крис Касперски __declspec (thread) int my_var -----------------------------------------------------------------------------------------------------------------