使用perl cgi每天提供少于10个http请求的最有效方法

时间:2014-02-14 16:46:08

标签: perl cgi debian inet inetd

我们公司管理着超过100台服务器,我们希望使用http每天一次或两次“询问”这些服务器的基本使用信息。使用perl cgi脚本可以很容易地找到使用信息,我们希望有一个http接口来简化脚本的创建和测试。使用apache甚至nginx + fcgiwrap来每天提供一两个请求似乎太过分了。我们考虑使用openbsd-inetd(已经安装在所有服务器中)来启动一个Web服务器,可以轻松地将请求传递给perl cgi脚本和quit。有什么好办法可以做到这一点?

我设法让perlscript.pl工作,但我不确定这是不是正确的做法。

#!/usr/bin/perl                                                                                                                                                                                           

use strict;
use warnings;

{
    package BackupWebServer;

    use HTTP::Server::Simple::CGI;
    use base qw(HTTP::Server::Simple::CGI);


    my %dispatch = (
        '/hello' => \&resp_hello
        );


    sub net_server { 'Net::Server::INET' }

    sub handle_request {

        my $self = shift;
        my $cgi  = shift;

        my $path = $cgi->path_info();
        my $handler = $dispatch{$path};

        if (ref($handler) eq "CODE") {
            print "HTTP/1.0 200 OK\r\n";
            $handler->($cgi);
        } else {
            print "HTTP/1.0 404 Not found\r\n";
            print $cgi->header,
            $cgi->start_html('Not found'),
            $cgi->h1('Not found'),
            $cgi->end_html;
        }

    }


    sub resp_hello {

        my $cgi  = shift;   # CGI.pm object                                                                                                                                                               
        return if !ref $cgi;

        my $who = $cgi->param('name');

        print $cgi->header,
        $cgi->start_html("Hello"),
        $cgi->h1("Hello $who!"),
        $cgi->end_html;

    }


}

BackupWebServer->new()->run(
    log_file => 'Sys::Syslog',
    user => 'root',
    group => 'root'
    );

inetd.conf

8901    stream  tcp     nowait  root    /home/perl/scriptname.pl

1 个答案:

答案 0 :(得分:2)

如果您不想将守护程序添加到这些计算机,那么您将不得不使用现有计算机。我认为安装了SSH?我会用那个。可能是使用HTTP的更安全的解决方案。