Perl для системного администрирования




Отслеживание операций с файлами и сетью - часть 4


format STDOUT =

@««««««««« @««««««««« @«««««««««

Sfilename,$time,Saction

format STDOUT_TOP =

File Name Date Action

Основное изменение- это добавление метода Read(). Он получает информацию об изменении и заполняет элементы списка ©status ссылками на хэш. Каждая ссылка указывает на анонимный хэш, который выглядит примерно так:

{'FileName' => "GLF2425.TMP',

'DateTime' => '11/08/1999 06:23:25р',

'Directory' => 'C:\temp', 'Action' => 3 }

Для каждого изменения могут произойти несколько событий, отсюда и необходимость вызывать Read() в цикле while(). Если соответствующим образом разыменовать содержимое этих хэшей и применить к ним форматирование, то получатся примерно такие данные:

File Name Date Acti01

"DF400E.tmp 11/08/1999 07:29:56p

FILE_.ACTION_PEMO\,'F.D

"DF6C5C. fnp 11/08/1999 07'29'56p

F1LF_AC1ION_ADDED

~OF6E66.tmp 11/08/1999 07:29:56р

FILE_ACTION_ADOED

~DF6E5C.tmp 11/08/1999 07:29:56р

FILE_ACriON_REMOVEO

К сожалению, отслеживание операций с сетью в NT/2000 впечатляет намного меньше. В идеале, как администратор вы хотели бы знать, какой процесс (а, следовательно, какой пользователь) открыл сетевой порт. Печально, но я не знаю ни одного модуля и ни одного инструмента, которые могли бы предоставить такую информацию. Существует один коммерческий инструмент, работающий в командной строке, под названием TCPVstat, который может показать связь процессов с использованием сети. TCPVstat можно найти в пакете TCPView Professional Edition, который доступен на http://www.winternals.com.

Если использовать только некоммерческие инструменты, то придется иметь дело лишь со списком сетевых портов, открытых в настоящее время. Для этого следует применять другой модуль Рамдана -Win32: :1рНе1р. Вот как выглядит код, печатающий нужную информацию:

use Win32: -.IpHelp;

# замечание: в данном случае регистр "IpHelp"

имеет значение' my $iobj = new Win32::IpHelp;

# заполняем список хэшем хэшей $iobj->GetTcpTable(\(a>table,1);

foreach Sentry (@table){




Содержание  Назад  Вперед