The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помоги с кодом на перле"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Помоги с кодом на перле"  +/
Сообщение от Даня on 08-Сен-10, 14:21 
Всем добрый день.

Помогите разобрать с куском кода, так как с перлом не имел дела вообще...

Немного истории:
- задача программы - просматривать какие программы и пакеты установлены в сети на серверах и ПК, потом скачивание новостей по безопасности из инета -> сравнивает установленные пакеты и какие баги и в чём нашли, если есть совпадения, то извещает админа о них.

Так вот интересующая часть программы - это как раз то место, где идёт сравнение установленных программ и багов. Я не могу понять, куда она записывает результат. В мануале вроде написано, что она извещает администратора, но как она это делает - найти этот момент я не смог.

Вопросы:
1) куда результат сравнения сейчас записывается?
2) можно ли изменить код, что б она записывала результат сравнения в файл?

Часть кода, отвечающая за сравнение (на сколько я понял):
#
# matches software against feed items
#
sub match {
  my( $package, $version, $item ) = @_;
  return 0 unless ( $package and $version and $item );
  return 0 unless $item =~ /[\s\-\_\.\!\:]\Q$package\E[\s\-\_\.\!\:]/i;
  #
  # kill buzzwords to minimize false positives
  #
  my $filter = '\s(?:access|ready|protocol|version|release|root|account
                  |connect|server|client|microsoft|windows|win32|gpl
                  |(?:open|free|net|mir|dragonfly|desktop)\-?bsd|free
                  |suse|debian|gentoo|ubuntu|redhat|slackware|admin
                  |unix|fedora|hp-ux|solaris|irix|linux|administrator
                  |xss|ajax|cross.?site.?scripting)\s';
  $item =~ s/$filter//xigo unless " $package $version " =~ /$filter/xigo;

  return 1 if $Conf{'paranoid'};
  my $count = 3;
  $count++ if $version =~ /.{1,4}\./o;
  $version = substr $version, 0, $count;
  return 0 unless $item =~ /\Q$version\E/i;

  return 1;
}

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помоги с кодом на перле"  +/
Сообщение от Кирилл_Н (ok) on 08-Сен-10, 14:42 
>[оверквотинг удален]
>
>
>  return 1 if $Conf{'paranoid'};
>  my $count = 3;
>  $count++ if $version =~ /.{1,4}\./o;
>  $version = substr $version, 0, $count;
>  return 0 unless $item =~ /\Q$version\E/i;
>
>  return 1;
>}

1) похоже что этой процедуре передаётся параметрами пакет, версия и некий итем. и после хитрых действий программа возвращает 0 - не надо обвнолять или 1 - надо обновлять
2) все return замените на
вывод_в_файл x and return x.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Помоги с кодом на перле"  +/
Сообщение от Даня on 08-Сен-10, 14:55 
>[оверквотинг удален]
>>  return 0 unless $item =~ /\Q$version\E/i;
>>
>>  return 1;
>>}
>
>1) похоже что этой процедуре передаётся параметрами пакет, версия и некий итем.
>и после хитрых действий программа возвращает 0 - не надо обвнолять
>или 1 - надо обновлять
>2) все return замените на
>вывод_в_файл x and return x.

конечно же - помогиТЕ.. опечатался...

извиняюсь, но в перле ПОЛНЫЙ нуль((((

правильно я пониаю, что здесь 0 или 1 передаётся остальной части программы, а не сам пакет и его версия? а можно здесь в файл вывести не 0 или 1, а программу и версию при результате 1?... и что значит вывод_в_файл х , его путь?


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Помоги с кодом на перле"  +/
Сообщение от Кирилл_Н (ok) on 08-Сен-10, 15:14 
>[оверквотинг удален]
>>вывод_в_файл x and return x.
>
>конечно же - помогиТЕ.. опечатался...
>
>извиняюсь, но в перле ПОЛНЫЙ нуль((((
>
>правильно я пониаю, что здесь 0 или 1 передаётся остальной части программы,
>а не сам пакет и его версия? а можно здесь в
>файл вывести не 0 или 1, а программу и версию при
>результате 1?... и что значит вывод_в_файл х , его путь?

пакет и версия передаётся извне в программу в качестве параметров: my( $package, $version, $item ) = @_;, а программа возвращает 0 или 1 тоже во внешнюю часть - куча return'ов. но если обновление происходит действительно по return 1, то можно сделать как-то так.
sub match {
  my( $package, $version, $item ) = @_;
  return 0 unless ( $package and $version and $item );
  return 0 unless $item =~ /[\s\-\_\.\!\:]\Q$package\E[\s\-\_\.\!\:]/i;
  #
  # kill buzzwords to minimize false positives
  #
  my $filter = '\s(?:access|ready|protocol|version|release|root|account
                  |connect|server|client|microsoft|windows|win32|gpl
                  |(?:open|free|net|mir|dragonfly|desktop)\-?bsd|free
                  |suse|debian|gentoo|ubuntu|redhat|slackware|admin
                  |unix|fedora|hp-ux|solaris|irix|linux|administrator
                  |xss|ajax|cross.?site.?scripting)\s';
  $item =~ s/$filter//xigo unless " $package $version " =~ /$filter/xigo;
  
  my $fH;
  open($fH, ">>/путь/к/файлу");

  print($fH "пакет $package, версия $version, итем $item") && close($fH) && return 1 if $Conf{'paranoid'};


  my $count = 3;
  $count++ if $version =~ /.{1,4}\./o;
  $version = substr $version, 0, $count;
  return 0 unless $item =~ /\Q$version\E/i;

  print($fH "пакет $package, версия $version, итем $item");
  close($fH);
  return 1;
}

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Помоги с кодом на перле"  +/
Сообщение от Даня on 08-Сен-10, 15:38 
>[оверквотинг удален]
>
>  my $count = 3;
>  $count++ if $version =~ /.{1,4}\./o;
>  $version = substr $version, 0, $count;
>  return 0 unless $item =~ /\Q$version\E/i;
>
>  print($fH "пакет $package, версия $version, итем $item");
>  close($fH);
>  return 1;
>}

Кирилл, спасибо большое за помощь!)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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