URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8914
[ Назад ]

Исходное сообщение
"вроде простой regex"

Отправлено sdog , 31-Окт-10 22:51 
нужен regex для отбора файловый систем на предмет проверки заполнения:
все что начинается с /, но не /sys, /proc, /dev, /selinux или "/ещё что-нибудь"

или может можно просто:
не /sys, /proc, /dev, /selinux или "/ещё что-нибудь"


Содержание

Сообщения в этом обсуждении
"вроде простой regex"
Отправлено jd , 31-Окт-10 23:50 
Лучше опишите задачу более обще. В зависимости от того, как вы получаете список файлов и что дальше с ними делаете, возможны разные варианты. Например, с помощью команды find можно сделать что-нибудь вроде этого:
find / '(' -path /sys -o -path /proc -o -path /dev -o -path /selinux -o -path "/ещё что-нибудь" ')' -prune -o -print


"вроде простой regex"
Отправлено sdog , 01-Ноя-10 08:52 
> Лучше опишите задачу более обще. В зависимости от того, как вы получаете
> список файлов и что дальше с ними делаете, возможны разные варианты.
> Например, с помощью команды find можно сделать что-нибудь вроде этого:
>
find / '(' -path /sys -o -path /proc -o -path /dev -o
> -path /selinux -o -path "/ещё что-нибудь" ')' -prune -o -print

информация получается по snmp


"вроде простой regex"
Отправлено Etch , 01-Ноя-10 08:51 
Опять сессия начинается?

echo "/sys/test" | perl -e 'my $t = <>; print $t unless $t =~ m@/(sys|proc|dev|selinux)(/|\Z)@;'


"вроде простой regex"
Отправлено sdog , 01-Ноя-10 09:06 
> Опять сессия начинается?
> echo "/sys/test" | perl -e 'my $t = <>; print $t unless
> $t =~ m@/(sys|proc|dev|selinux)(/|\Z)@;'

Спасибо это работает в скрипте, но в уже имеющемся скрипте (http://nagios.manubulon.com/snmp_storage.html) не работает, простые регэкспы, типа  '(/var|/sys)', работают.


"вроде простой regex"
Отправлено Etch , 01-Ноя-10 09:40 
> Спасибо это работает в скрипте, но в уже имеющемся скрипте (http://nagios.manubulon.com/snmp_storage.html)
> не работает, простые регэкспы, типа  '(/var|/sys)', работают.

а полный текст вашей команды?


"вроде простой regex"
Отправлено s_dog , 01-Ноя-10 11:53 
>> Спасибо это работает в скрипте, но в уже имеющемся скрипте (http://nagios.manubulon.com/snmp_storage.html)
>> не работает, простые регэкспы, типа  '(/var|/sys)', работают.
> а полный текст вашей команды?

примерно такой:

/usr/lib/nagios/plugins/check_snmp_storage -H hostname -p port -l snmp_user -x snmp_auth_pass -w 90 -c 95 -m "(/sys|/proc)"


"вроде простой regex"
Отправлено Pahanivo , 01-Ноя-10 12:28 
>>> Спасибо это работает в скрипте, но в уже имеющемся скрипте (http://nagios.manubulon.com/snmp_storage.html)
>>> не работает, простые регэкспы, типа  '(/var|/sys)', работают.
>> а полный текст вашей команды?
> примерно такой:
> /usr/lib/nagios/plugins/check_snmp_storage -H hostname -p port -l snmp_user -x snmp_auth_pass
> -w 90 -c 95 -m "(/sys|/proc)"

а что разве нельзя отдельными oid (для каждой ФС) получить нужные значения? или у вас список файловых систем меняется часто? или серваков тыща?


"вроде простой regex"
Отправлено s_dog , 01-Ноя-10 14:28 
>>>> Спасибо это работает в скрипте, но в уже имеющемся скрипте (http://nagios.manubulon.com/snmp_storage.html)
>>>> не работает, простые регэкспы, типа  '(/var|/sys)', работают.
>>> а полный текст вашей команды?
>> примерно такой:
>> /usr/lib/nagios/plugins/check_snmp_storage -H hostname -p port -l snmp_user -x snmp_auth_pass
>> -w 90 -c 95 -m "(/sys|/proc)"
> а что разве нельзя отдельными oid (для каждой ФС) получить нужные значения?
> или у вас список файловых систем меняется часто? или серваков тыща?

машин много, нужно сделать универсальное решение - по имени, по OID'у нет желания


"вроде простой regex"
Отправлено Etch , 01-Ноя-10 15:36 
> /usr/lib/nagios/plugins/check_snmp_storage -H hostname -p port -l snmp_user -x snmp_auth_pass
> -w 90 -c 95 -m "(/sys|/proc)"

Попробуйте так:
-m "^(?!/(sys|proc))(/|\Z)"


"вроде простой regex"
Отправлено Etch , 01-Ноя-10 16:13 
Или лучше так:
-m "^(?!/(sys|proc)(/|\Z))"

"вроде простой regex"
Отправлено s_dog , 01-Ноя-10 16:30 
> Или лучше так:
> -m "^(?!/(sys|proc)(/|\Z))"

Error compiling regexp (invalid regexp or memory prb)


"вроде простой regex"
Отправлено Etch , 02-Ноя-10 02:32 
>> -m "^(?!/(sys|proc)(/|\Z))"
> Error compiling regexp (invalid regexp or memory prb)

Значит не поддерживает он регекспы с условием, пишите скрипт-обёртку который получает список каталогов и запускает check_snmp_storage с нужными параметрами.


"вроде простой regex"
Отправлено s_dog , 02-Ноя-10 11:27 
>>> -m "^(?!/(sys|proc)(/|\Z))"
>> Error compiling regexp (invalid regexp or memory prb)
> Значит не поддерживает он регекспы с условием, пишите скрипт-обёртку который получает список
> каталогов и запускает check_snmp_storage с нужными параметрами.

ясно, спасибо!