1
사용자가 입력 한 IP의 서브넷을 찾아야합니다. 나는 "ypcat -k netmasks.byaddr
"유닉스 명령을 perl에서 실행하여 넷 마스크를 찾는다. 그것은 커맨드 라인 실행에서 잘 작동합니다. 하지만 웹 서버에서 실행되는 동안 작동하지 않습니다.perl cgi를 사용하여 주어진 IP의 서브넷을 찾는 방법은 무엇입니까?
아래 코드가 있습니다.
use strict;
use CGI;
my $page=new CGI;
print $page->header;
my $ipaddress=$page->param("ip");
my @splitted=split(/\./,$ipaddress);
my $part1=$splitted[0].".".$splitted[1].".".$splitted[2];
my $part2=$splitted[3];
my $comma1="ypcat -k netmasks.byaddr|grep -w $part1|awk '{print \$1}'|awk -F. '{print \$4}'|sort -g";
my $comm2="ypcat -k netmasks.byaddr|grep -w $part1|sort";
my @out=`$comm1`;
my @out2=`$comm2`;
my $match;my $sub;my $found;
foreach my $i(@out){
chomp($i);
if($part2 > $i){
$sub=$i;
$found=$part1.".".$sub;
}
}
my (@matched) = grep $_=~m/$found/, @out2;
chomp(@matched);
print "@matched\n";
위의 코드는 주어진 IP의 서브넷을 찾기 위해 사용하는 코드입니다. "$ comm1"및 "$ comm2"실행이 실패합니다. Perl 스크립트를 사용하여 입력 한 사용자의 서브넷을 찾는 다른 방법이 있습니까?
감사합니다, 마단
? 당신이 문제가있는 코드를 보여 주면 도움이 될 것입니다 ... – pavel
안녕하세요, pavel, 질문을 수정했습니다. – Madhan
어떤 오류가 발생합니까? (웹 서버 로그를 확인하십시오). 한 가지 잘못된 점은 출력 전에 HTTP 헤더를 인쇄하지 않는다는 것입니다. – pavel