Самый эффективный способ обслуживать менее 10 http-запросов в день с использованием perl cgi

Наша компания управляет более чем сотней серверов, и мы хотели бы "запрашивать" у этих серверов основную информацию об использовании один или два раза в день, используя http. Информацию об использовании можно легко найти с помощью сценария Perl CGI, и мы хотели бы иметь интерфейс http, чтобы упростить создание сценариев и их тестирование. Кажется излишним иметь apache или даже nginx+fcgiwrap для обслуживания одного или двух запросов в день. Мы думали об использовании openbsd-inetd (который уже установлен на всех серверах) для запуска веб-сервера, который мог бы легко передать запрос сценарию perl cgi и завершить работу. Какие есть хорошие альтернативы для этого?

Мне удалось получить это 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 ответ

Если вы не хотите добавлять демона к этим машинам, вам придется использовать существующий. Я предполагаю, что SSH установлен? Я бы использовал это. Возможно, более безопасное решение, которое использует HTTP в любом случае.

Другие вопросы по тегам