【问题标题】:using PHP to display output from a perl script使用 PHP 显示 perl 脚本的输出
【发布时间】:2010-07-27 19:32:20
【问题描述】:

我是 PHP 新手,我有一个可以工作的 perl 脚本,它基本上可以登录到远程服务器,收集一个日志文件并将某些日志文件信息显示到 STDOUT。

我想让它现在可以作为网页查看,因此查看 PHP 以显示此输出。我只想查看与我现在在终端上看到的相同的输出。目标是改进这些数据的格式/呈现方式。

此外,任何关于通过 PHP 格式化输出的最佳方法的想法/示例都会很棒。谢谢!!

这里是 perl 脚本:(通过传递一些参数来执行)

Usage: ./statsinfo.pl Jul 26 2010 /var/log/server.log server1

my($mon,$day,$year,$file,$server) = @ARGV;
my $regex_flag = 0;                 
splice(@ARGV, 0, 4, ());            
foreach my $server ( @ARGV ) {     
    print "===================================================================================\n";
    print "REPORTING SUMMARY for BACKUP SERVER : $server\n"; 
    open(my $fh,"ssh $server cat $file |") or die "can't open log $server:$file: $!\n";
    while (my $line = <$fh>) {
        if ($line =~ m/.* $mon $day \d{2}:\d{2}:\d{2} $year:.*(ERROR:|backup-date=|backup-size=|backup-time=|backup-status)/) {
            print $line;
            $regex_flag=1; 
        }
    } #end while loop
        if ($regex_flag==0) { 
           print "NOTHING TO REPORT FOR $server: $mon $day $year \n";
        }
    $regex_flag=0; 
    close($fh);
}

【问题讨论】:

  • 完全可以制作基于 perl 的网站,你知道的!查看 HTML::Mason masonhq.com

标签: php perl


【解决方案1】:

使用: exec("你的命令(执行 perl 脚本)", $output);

写入标准输出的数据应该在 $output 变量中。请记住,http 服务器将等待此命令,直到您的脚本结束,因此请注意等待键盘输入等。

【讨论】:

  • 谢谢@killer_PL。那么我最好把这个 perl 脚本转换成 php 吗?
  • 如果您的脚本执行速度很快,您就不必这样做。在您使用的小问题和工具中,这是可以的。但是在较大的解决方案中,用 PHP 来做是非常好的,尤其是这个脚本很简单。在你的地方,只有当你的服务器上的 php 不允许 exec 命令时,我才会重写它。
  • @jaedre619:如果脚本工作正常,您不需要将 Perl 脚本转换为 PHP。只需像 Killer_PL 建议的那样从 PHP 中使用它。
  • @jmz - perl 脚本工作正常而且是基本的。在通过网络查看此内容后,我想增强格式/演示文稿。 printf 是我将用于此的功能吗?谢谢大家!
  • 我认为,更好的方法是从 perl 以非格式化输出(如“x;y;z;....”)输出数据,通过“;”在 PHP 中将其爆炸()并在 PHP 中进行 html-tagget 输出。
【解决方案2】:

只是为了显示输出,这里不需要 PHP。将 Perl 输出重定向到 Web 服务器可以静态提供服务并使用浏览器访问的文件。

【讨论】:

  • 我会把静态文件放在哪里?如果它是一个文本文件,可以这样读取还是必须在另一个 php 脚本中调用?谢谢。
  • 或者直接从网络服务器调用perl脚本。
  • 静态文件,即 Perl 脚本的输出,必须存储在网络服务器可以提供服务的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
相关资源
最近更新 更多