The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

ftp (то есть что у нас качают фтпяторы :) (ftp log example)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ftp, log, example,  (найти похожие документы)
_ RU.OS.CMP (2:5077/15.22) _________________________________________ RU.OS.CMP _ From : Igor Nikolaev 2:5030/266 Mon 26 Oct 98 23:47 Subj : ftp (то есть что у нас качают фтпяторы :) ________________________________________________________________________________ Alexey Gubin <Alexey_Gubin@f238.n5020.z2.fidonet.org> wrote: > А вообще-то, если в UNIX-e все умеют писать скpипт, то в NT можно и > уметь QB. К тому же QB гоpаздо пpоще, чем [q'`p- [@ -1 -#"foo" -bar > или как там. Я так понял, что начался деловой разговор с писанием скриптов. Это уже праздник. Я хочу привести пример простого реального скрипта на perl'е, откомментировать его и предложить Вам quick соорудить нечто похожее на basic'е - для того чтобы прилюдно сделать cmp используемых os ;-) Я надеюсь, что исходный текст, мои подробные комментарии и выдача реального результата работы скрипта сделают этот процесс быстрым и незатруднительным для любого пользователя Microsoft NT, хотя бы немного знакомого с QB. Вот полный текст скрипта: hi.pu.ru% cat ftpstatus #!/usr/local/bin/perl -w open ( FW, "ps -ww -U ftp|" ) ; while ( <FW> ) { @_ = split; next if ( $_[4] ne "ftpd:" ); chop ( $domain{$_[0]} = lc ($_[5]) ); $file{$_[0]} = $_[8]; } close ( FW ); foreach $pid ( sort { join ( '', reverse ( split ( /\./, $domain{$a} ) ) ) cmp join ( '', reverse ( split ( /\./, $domain{$b} ) ) ) } ( keys %domain ) ) { print $domain{$pid}, ":", $file{$pid}, "\n"; } hi.pu.ru% Этот небольшой скрипт при помощи команды ps выясняет у системы какие именно процессы происходят у пользователя ftp (то есть что у нас качают фтпяторы :) Вывод команды считывается строчка за строчкой, split разбивает строчку по пробелам на параметры, записывая их в массив $_[] В скрипте используется что нулевой параметр $_[0] это уникальный pid, пятый $_[5] - имя домена, восьмой $_[8] - файл (или что у нас сейчас делает ftp). Соответственно в массиве $domain{$pid} оказывается кто пришёл, в массиве $file{$pid} - чем занимается, затем это печатается упорядоченным по доменам. foreach элемент ( sort {функция сортировки} ( keys массив ) ) перебирает в заданном функцией сортировки порядке индексы указанного массива, используется для печати $domain{индекс} и $file{индекс}. Вот результат работы скрипта на реальной машине: hi.pu.ru% ./ftpstatus pc-isp-tor-uas-76-88.sprint.ca:/pub/www/music/rock/mv/a2-05.mp3 233.eclipse-soft.com:Scooter-Husterio.mp3 mail.pch.com:s0403.mp3 huggins.mps.ohio-state.edu:cu06_06.mp3 dent.ipari12-bp.sulinet.hu:nn11_12.mp3 1cust195.tnt6.lax3.da.uu.net:/incoming/rem/Man_on_the_moon.mp3 kamyk.intersoft.tarnow.pl:(ftpd) ssb.barrt.ru:13.mp3 gs1820.ws.pu.ru:/FreeBSD/3.0-RELEASE/bin/bin.ca hq.icb.chel.su:cu08_15.mp3 abyss.itl.net.ua:9.mp3 dial-up-73.eurocom.od.ua:nn09_04.mp3 hi.pu.ru% wc ftpstatus 15 84 406 ftpstatus hi.pu.ru% Вас не затруднит написать *функциональный* аналог этих пятнадцати строчек на QB или на любом ином поставляемом с Microsoft NT языке, функционально ему аналогичном? Иначе говоря, нужно вывести отсортированный по доменам список народу. Если Вам сложно взять активных ftp пользователей, возьмите что-то другое, например просто к-л файл с десятком доменов. Пример, приведённый мной совершенно работоспособен, можно не выдумывать ничего нового и просто взять готовый алгоритм. Я надеюсь, что Вы не затратите много времени и Ваш код также будет понятен и компактен ;-) > Wbr, Alex -- Игорь Hиколаев --- ifmail v.2.12.os.sensi * Origin: Жду привета, как SYN RST пакета (2:5030/266@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
MIRhosting
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру