The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Регулярные выражения Perl"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 07:23  (MSK)
С cisco приходит такая строка
May 28 07:11:34 1.1.0.11 148: 5w1d: %SYS-5-CONFIG_I: Configured from console by vty3 (1.1.0.11)
Эту строку надо и искать по подстроке
%SYS-5-CONFIG_I: Configured from console by vty0

#syslog.conf
local1.*               |exec /path/to/filter.pl

#filter.pl
#!/usr/bin/perl
use Term::ANSIColor;
$line=<STDIN>;
$concole="/dev/console";
$file="/var/log/cisco.log";
$pattern="%SYS-5-CONFIG_I: Configured from console by vty0";
open(FILE, ">>$file");
open(CONSOLE, ">>$console");
if ($line=~/$pattern?/)
#предыдущая строка примечательна, что пока не поставлю ? не хочет #работать никак. Где я ошибаюсь какое должно быть регулярное выражение
#/$pattern/ в таком виде не работает
        {
        system("clear");
        print FILE color("red"), "\a\a\a\a\a$line", color("reset");
        print CONSOLE color("red"), "\a\a\a\a\a$line", color("reset");
        }
else
        {
        print FILE  "$line";
        print CONSOLE  "\a$line";
        }

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 09:20  (MSK)
И не выводит на консоль.

Делаю
echo "Hello" > /dev/console
все работате, а через скрипт не хочет

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Регулярные выражения Perl"
Сообщение от YuryD Искать по авторуВ закладки(??) on 28-Май-04, 10:05  (MSK)
>И не выводит на консоль.

Найдите два отличия :-)


$concole="/dev/console";
^^^^^^^^

open(CONSOLE, ">>$console");
                 ^^^^^^^^^^

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 10:16  (MSK)
Черт точно, ошибочка, а что с регулярным выражением?
Сейчас вот пробую так вообще входная строка оканчивается на vty5, а по шаблону vty0 и ведь проскакивает шаблон типа находит совпадение!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Регулярные выражения Perl"
Сообщение от YuryD Искать по авторуВ закладки(??) on 28-Май-04, 10:46  (MSK)
>Черт точно, ошибочка, а что с регулярным выражением?
>Сейчас вот пробую так вообще входная строка оканчивается на vty5, а по
>шаблону vty0 и ведь проскакивает шаблон типа находит совпадение!

? это квантификатор 0 совпадений или одно совпадениеб попробуйте +

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 11:40  (MSK)
Я понимаю, в том то и феня что работает только с ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Регулярные выражения Perl"
Сообщение от YuryD Искать по авторуВ закладки(??) on 28-Май-04, 11:56  (MSK)
>Я понимаю, в том то и феня что работает только с ?

Для начала я бы избавился от регистра с помощью /i


  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 12:31  (MSK)
Пробовал не помогает
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Регулярные выражения Perl"
Сообщение от YuryD Искать по авторуВ закладки(??) on 28-Май-04, 13:14  (MSK)
>Пробовал не помогает

Для начала упростите pattern хотя бы до  /configured from console by vty./i
Все равно это будет только от киски (очень специфично)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 13:52  (MSK)
Так не будет работать если между словами не поставить.+
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Регулярные выражения Perl"
Сообщение от YuryD Искать по авторуВ закладки(??) on 28-Май-04, 14:18  (MSK)
>Так не будет работать если между словами не поставить.+

Правильно, точка=универсальный заполнитель, но я бы поставил \s+
(любое кол-во пробельных символов)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Регулярные выражения Perl"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 28-Май-04, 14:25  (MSK)
Ну так то я делали, все работает
if ($line=~/.+Configured\s+from\s+console\s+by\s+vty.+/i)

интересно все же узнать как через переменную $pattern

$pattern="%SYS-5-CONFIG_I: Configured from console by vty";

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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