2013-04-26 3 views
0

친절히 도와주세요. 제 요구 사항은 웹상에서 Apache를 통해 호스팅되는 웹 페이지 양식에서 선택한 매개 변수를 기반으로 실행해야하는 DOS 배치 스크립트가 거의없는 VM이 ​​있다는 것입니다.아파치에서 실행중인 cgi를 사용하여 VM에서 실행하기위한 dos 배치 파일 호출하기

나는 VM에서 실행중인 아파치, & 웹 페이지 양식을 다른 PC의 브라우저를 통해 호출했습니다. 양식을 제출할 때 perl로 작성된 .cgi를 호출합니다.

그 .cgi에서 VM에서 실행될 일괄 처리 스크립트를 호출하고 싶습니다.

1 단계 : 가 HTML 양식 :

form action="/cgi-bin/tasks.cgi" method="POST" target="_blank" 

2 단계 :

파일 tasks.cgi에서이 [위치를 아래

내가 때라도하고있는 단계입니다 VM], VM에 저장된 "C:\events.bat" dos 배치를 호출하려고합니다. C:\events.bat의 명령이 VM에서 실행됩니다. 이것이 가능한가?

나는 system, exec, qx,``을 시도했지만 아무 것도 .bat 파일을 호출하지 않은 것 같습니다.

진행 방법을 알려주십시오.

감사합니다, Prasanth

tasks.cgi은 다음과 같습니다

#!perl 

local ($buffer, @pairs, $pair, $name, $value, %FORM); 
# Read in text 
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; 
if ($ENV{'REQUEST_METHOD'} eq "POST") 
{ 
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); 
}else { 
$buffer = $ENV{'QUERY_STRING'}; 
} 
# Split information into name/value pairs 
@pairs = split(/&/, $buffer); 
foreach $pair (@pairs) 
{ 
($name, $value) = split(/=/, $pair); 
$value =~ tr/+/ /; 
$value =~ s/%(..)/pack("C", hex($1))/eg; 
$FORM{$name} = $value; 
} 
$proc = $FORM{proc}; 

############## PLEASE HELP IN THIS SECTION-BEGIN ############################ 

system("C:\\events\.bat"); 

############## PLEASE HELP IN THIS SECTION-END ############################ 

print "Content-type:text/html\r\n\r\n"; 
print "<html>"; 
print "<head>"; 
print "<title>The chosen process is being executed</title>"; 
print "</head>"; 
print "<body>"; 
print "<h2> Process is $proc</h2>"; 
print "</body>"; 
print "</html>"; 

1; 
+0

시스템 ("% ComSpec %/c \"C : \\ events \ .bat \ "")을 사용해 보셨습니까? 그러면 cmd.exe/c "c : \ events.bat"'가 실행됩니다. –

+0

이것은 바보 같은 질문 일지 모르지만 귀하의 게시물 어디에도 VM 웹 서버가 Windows에서 실행되고 있다고 주장 할 수는 없습니다. 그럴까요? –

답변

0

다른 사용자가 그것을 읽고 그 디렉토리에있는 파일을 실행하는 해당 폴더에 권한이 필요로 아파치 실행 . 당신은 하나의 "디렉토리"지시어에 파일을 배치하고 그것을 실행하려고 할 수 있습니다. 당신이 사용할 수있는 디렉토리의 옵션을 확인하십시오 : http://httpd.apache.org/docs/2.2/mod/core.html#options

관련 문제