#!/usr/bin/perl # # Remote-Cmd F.Luettgens ######################## use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); use HTML::Template; chomp(my $sshbin = `which ssh`); my $cgi       = "/cgi-bin/remotecmd/remotecmd.cgi"; my $goto      = $ENV{PATH_INFO}; my $query = CGI->new; my @configs   = $query->param; my %params    = $query->Vars; $goto =~ s!^/!!; chomp(my $hostfile = `echo \$WCOLL`);           # hostliste auslesen open(HOSTS, "$hostfile"); my @hostlist = ; close(HOSTS); foreach (@hostlist) {        s/i$//;                                 # angehaengtes "i" entfernen } print $query->header;                           # html header schicken my %map = (                                     # function-map    output        => \&output,    cmd           => \&cmd,    exec_cmd      => \&exec_cmd, ); sub cmd {    my $tmpl = HTML::Template->new( filename =>  'cmd.tmpl' );    $tmpl->param( SCRIPT => $cgi );    print $tmpl->output; } sub exec_cmd {        my $server = $params{'hostlist'};        my $command = $params{'command'};        my $send2all = $params{'allhosts'};        if ($send2all eq "send2all") {                          # ssh connect an alle rechner?                foreach (@hostlist) {                        sshconnect($_, $command);                        print ("Output: $_[0]");                }        } else {        ssh_connect($server, $command);                         # ssh connect        print("Output: $_[0]"); } } sub ssh_connect {        my @output = (system("$sshbin $_[0] $_[1]"));                  return @output; } if( exists $map{$goto} ){        $map{$goto}->(); } else{        my $tmpl = HTML::Template->new( filename => 'default.tmpl' );        $tmpl->param( SCRIPT => $cgi );        print $tmpl->output; }