我被困在很多天里,我有一个perl脚本。我在我的CGI文件中创建了一个函数,它有一些HTML内容和一个执行shell脚本的系统命令。然后我有一个调用perl文件的href,后者又调用CGI函数并在浏览器上显示内容。但除了在CGI中执行系统命令外,一切都在加载。我试图将此系统命令放在我的Perl文件本身中,并且在执行时它从命令行成功执行shell脚本。但我希望这发生在点击按钮上,所以我不得不拨打CGI电话,但我仍然无法打电话给它。 我经历了很多问题,但我仍然在寻找完美的答案。 这是我的代码: test1.pl
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use Basecamp::UI;
use Basecamp::Dashboard;
use Basecamp::Info;
my $cgi = Basecamp::UI->new->cgi();
my $dashboard = Basecamp::Dashboard->new();
my @html = $cgi->tab_ext();
#push @html, '<div class="page">';
#push @html, newstuff();
#push @html, '</div>';
#print "Hello Hey";
#system( ' sh /home/basecamplocal/Perforce/depot/qeutils/basecamp_dev/sample.sh ');
print $cgi->begin('Basecamp | ext', $dashboard), $cgi->begin_page();
print @html;
print $cgi->end_page(), $cgi->begin_footer(), $cgi->end_footer(), $cgi->end();
shell脚本是:
#!/bin/bash
#perl Basecamp.pl > log_sample.txt
touch log_sample.txt
echo "Good Day"
CGI文件功能:
=item tab_ext()
======================================================================================
DESC: Generates appropriate tabs for About, about.pl.
OUT: Returns array of scalars with html to draw the tabs and any associated
subtabs.
======================================================================================
=cut
sub tab_ext
{
my ($self) = @_;
my $tab = $self->param('tab');
my @tabs = ('<li><a href="test1.pl?tab=New">Status Restart</a></li>');
my @subtabs = ();
my @html = ();
$tabs[0] = '<li class="selected"><a href="#">Status Restart</a></li>';
@html = ('<ul id="tabs">', @tabs, '</ul>');
push @html, ('<ul id="subtabs">', @subtabs, '</ul>');
print "Content-type: text/html\n\n";
system("sh /full path to shell file /sample.sh ");
return @html;
}
我正在href调用html上调用test1.pl文件。除了shell脚本的执行外,还显示了CGI的整个html内容。 我们将不胜感激。
答案 0 :(得分:-1)
看起来您有权限问题。首先检查system.sh
程序和父目录的权限。我认为网络用户无权执行该程序。
测试代码:test.cgi
遗产:755
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
print header( -type => 'text/html' );
print <<EOF;
<title>Browser Page</title>
<body>
<div> Hellow </div>
EOF
my $command ="sh /tmp/abc.sh";
print "$command<br>";
system($command);
print "</body>";
代码:abc.sh
#!/bin/bash
echo "Good Day"
浏览器上的输出是
Hellow
sh /tmp/abc.sh
Good Day
希望这会对你有所帮助。