#!/usr/bin/perl # # Remote-Cmd F.Luettgens ######################## use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); my $cgi = "/cgi-bin/remotecmd/remotecmd.cgi"; my $query = CGI->new; my @configs = $query->param; my %params = $query->Vars; my $hostfile = "/usr/local/etc/rup"; print $query->header(); chomp(my $sshbin = `which ssh`); open my $hosts, '<', $hostfile or die "Couldnt open $hostfile: $!"; my @hostlist = <$hosts>; close($hosts); foreach (@hostlist) { s/i$//;   ;   ; # angehaengtes "i" entfernen } my %map = ( exec_cmd => \&exec_cmd, ); my $output = ''; my $options = join "\n", map{ qq~ ~ }@hostlist; my $goto = $ENV{PATH_INFO}; $goto =~ s!^/!!; if( exists $map{$goto} ){ $output = $map{$goto}->(\%params); print_output( $output ); } else{ print_html( $options ); } sub exec_cmd { my ($paramref) = @_; my %params = %$paramref; my $server = $params{'hostlist'}; my $command = $params{'command'}; my $send2all = $params{'allhosts'}; my $output = ''; if ($send2all eq "send2all") { # ssh connect an alle rechner? foreach (@hostlist) { $output .= ssh_connect($_, $command); } } else { $output = ssh_connect($server, $command); &nbs p; # ssh connect } return $output; } sub ssh_connect { my ($server,$command) = @_; my $output = qx{$sshbin $server $command}; return $output; } sub print_html{ my ($options) = @_; print <
Hostname Command:
Alle Hosts

EOT } sub print_output{ my ($out) = @_; print $out; }