The OpenNET Project / Index page

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

WINDOWS MUST DIE SOON! YРРРA ТОВАРИЩИ


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

_ RU.OS.CMP (2:5077/15.22) _________________________________________ RU.OS.CMP _
 From : Igor Nikolaev                       2:5030/266      Mon 26 Oct 98 23:47 
 Subj : Re: WINDOWS MUST DIE SOON! YРРРA ТОВАРИЩИ                               
________________________________________________________________________________
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 Установить закладку Перейти на закладку Следующая >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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