2012-01-09 3 views
3

아파치 용 모듈이 현재 설치되어 있는지 확인하고 볼 수있는 Perl 스크립트를 작성하고 있습니다. Bash에서는 다음을 사용합니다 :Perl에서 설치된 Apache 모듈을 어떻게 확인합니까?

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

이 모듈이 있으면 TRUE 값을 반환하고 그렇지 않으면 FALSE를 반환합니다. 나는 httpd -M이 항상 "Syntax OK"를 출력하기 때문에 문제가 발생한다.

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

상기 중간은 항상하지만 참으로 평가 : 여기

는 내가 지금까지 가지고 맞는지 것입니다. 내 구성에 대한

: 제안을

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
perl 2>/dev/null -le 'my @list = qx(httpd -D DUMP_MODULES); print "FCGI found" if (grep { $_ =~ /fcgi/ } @list) ' 
+1

+1. grep/fcgi /, qx (httpd -D DUMP_MODULES);라고 쓰면 FCGI는 "print"를 사용하지 않을까요? – flesk

+0

둘 다 여전히 "구문 확인"= (답변을 주셔서 감사합니다! – graypay

0

출력을 리디렉션해야하는 것으로 나타났습니다. 그 방법에 대해 혼란스러워했습니다.

$ 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" 
} 

내가 가장 필요로하는 것은 아니다.

들여다 본 사람 감사합니다!

관련 문제