Как проверить установленный модуль Apache в Perl? - PullRequest
3 голосов
/ 09 января 2012

Я пишу скрипт на Perl, чтобы проверить, установлен ли модуль для Apache.В Bash я бы использовал:

# httpd -M | grep fcgid
Syntax OK
fcgid_module (shared)

Я хочу, чтобы это возвращало значение TRUE, если этот модуль существует, и FALSE, если его нет.Я сталкиваюсь с проблемой, потому что httpd -M всегда выводит «Синтаксис ОК».

Вот что я получил до сих пор:

#!/usr/bin/perl
my $FCGID = "";
if (`httpd -M | grep fcgid`) {
$FCGID = "enabled"
} else {
$FCGID = "disabled"
}

IF всегда оценивается какправда правда.

О моей конфигурации:

x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS release 6.2 (Final)
# httpd -v
Server version: Apache/2.2.15 (Unix)
# perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Открыто для предложений.Я довольно новичок в Perl и все еще новичок в скриптах Bash.

Ответы [ 2 ]

2 голосов
/ 09 января 2012
perl 2>/dev/null -le 'my @list = qx(httpd -D DUMP_MODULES ); print "FCGI found" if ( grep { $_ =~ /fcgi/ } @list )  '
0 голосов
/ 10 января 2012

Оказывается, мне просто нужно перенаправить вывод, и я не понял, как это сделать.

$ httpd -M 2> /dev/null | grep fcgid_module
fcgid_module (shared)

Таким образом, в PERL я могу оценить это выражение BASH, сохранить его в переменной и проверить на соответствие переменной в выражении IF.

my $FCGI = "";
my $FCGI_mod = `httpd -M 2> /dev/null | grep fcgid_module`;
if ( $FCGI_mod eq "" ) {
$FCGI = "disabled"
} else {
$FCGI = "enabled"
}

Это не самая красивая, но она делает то, что мне нужно.

Спасибо тем, кто в это заглянул!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...