0

请在这里帮助我。我的要求是我们有一个虚拟机,需要根据网页表单上选择的参数在该虚拟机上运行几个 dos 批处理脚本,该网页表单是通过虚拟机上的 Apache 托管的。

我在虚拟机上运行了 Apache,并通过浏览器从另一台 PC 调用了网页表单。在提交表单时,我调用了一个用 perl 编写的 .cgi。

在那个 .cgi 中,我想调用要在 VM 上运行的批处理脚本。

以下是我正在执行的步骤:

第 1 步: HTML 表单:

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

第2步:

在文件tasks.cgi[位于 VM 中] 中,我想调用"C:\events.bat"存储在 VM 上的 dos 批处理。中的命令C:\events.bat将在 VM 上运行。这可能吗?

我试过system, exec, qx, ``,但似乎没有一个调用 .bat 文件。

请告知如何进行。

谢谢,普拉桑特

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;
4

1 回答 1

0

Apache 以不同的用户身份运行,它需要对该文件夹具有权限才能读取和执行该目录中的文件。您可以尝试将文件放在“目录”指令中并尝试执行它。检查您可以使用的目录选项:http ://httpd.apache.org/docs/2.2/mod/core.html#options

于 2013-04-26T22:08:30.557 回答