请在这里帮助我。我的要求是我们有一个虚拟机,需要根据网页表单上选择的参数在该虚拟机上运行几个 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;