Perl在DIR中显示文件,链接并在浏览器中显示

时间:2015-02-25 18:08:06

标签: perl

我一直在网上搜索并尝试不同的代码变体,以便最终用户可以通过Web界面查看所有服务器备份日志,并选择其中任何一个来在浏览器中读取日志。我正在研究RHEL 6的测试系统。有dir" / var / log / vista / stcr2tsvr /"存储备份日志的位置,其中包含文件。我甚至chmod 755所有的dirs。和文件(仅供测试)当我从浏览器调用脚本时,我得到我想要显示为超链接的文件。有一个问题我会点击链接,但是perl正在查看cgi-bin DIR,所以我强迫它查看" / var / log / vista / stcr2tsvr /"

    $list->a({-href=>"/var/log/vista/stcr2tsvr/$file"}),

更干净:

    $list->a({-href=>$fileDir.$file}),    

这曾经是这样的

    $list->a({-href=>$file}), 

但正如我所说的那样会查看cgi-bin而不是日志DIR。

所以现在超链接引用了正确的DIR和文件但是当单击时我仍然找不到文件,即使文件在那里。任何帮助都会很棒!出于想法:(

    #!/usr/bin/perl

    use strict;
    use CGI;
    use warnings;

    my $list = new CGI;
    my $fileDir = '/var/log/vista/stcr2tsvr/';
    my @files;

    print $fileDir;


    opendir DIR, "$fileDir";
    @files = grep(/\.log$/,readdir(DIR)); 


    closedir DIR;

    print $list->header("text/html"),
    $list->start_html("Files in $fileDir"),
    $list->p("These are the files in $fileDir");

    foreach my $file (@files) {
    print $list->p(
    $list->a({-href=>$fileDir.$file}),
    $file)

    }

    print $list->end_html;

1 个答案:

答案 0 :(得分:-1)

很高兴去!我在httpd.conf中添加了以下内容:

Alias /logs/ "/var/log/vista/stcr2tsvr/"

<Directory "/var/log/vista/stcr2tsvr/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

并更改了代码以反映别名

#!/usr/bin/perl
use strict;
use CGI;

my $list = new CGI;
my $fileDir = "/var/log/vista/stcr2tsvr/";
my $alias = "/logs/";
my @files;

print $fileDir;

opendir DIR, "$fileDir";

@files = grep(/\.log$/,readdir(DIR)); ## Example file to read 2015
+0210-dubr3psvr-backup.log

closedir DIR;

print $list->header("text/html"),
  $list->start_html("Files in $fileDir"),
  $list->p("These are the files in $fileDir");

foreach my $file (@files) {
print $list->p(
        $list->a({-href=>$alias.$file},
        $file)
        );
}

print $list->end_html;