From: <sis...@sy...> - 2007-03-01 17:35:11
|
Author: arighi Date: 2007-03-01 11:35:01 -0600 (Thu, 01 Mar 2007) New Revision: 3953 Modified: trunk/lib/SystemImager/HostRange.pm trunk/sbin/si_psh Log: added interactive mode to si_psh Modified: trunk/lib/SystemImager/HostRange.pm =================================================================== --- trunk/lib/SystemImager/HostRange.pm 2007-03-01 09:50:55 UTC (rev 3952) +++ trunk/lib/SystemImager/HostRange.pm 2007-03-01 17:35:01 UTC (rev 3953) @@ -68,7 +68,7 @@ return; } elsif (defined $pid) { # print "$prog $opts $host $cmd\n"; - my @out = `$prog $opts $host $cmd 2>&1`; + my @out = `exec 2>&1 $prog $opts $host $cmd`; if ($?) { select(STDERR); } Modified: trunk/sbin/si_psh =================================================================== --- trunk/sbin/si_psh 2007-03-01 09:50:55 UTC (rev 3952) +++ trunk/sbin/si_psh 2007-03-01 17:35:01 UTC (rev 3953) @@ -120,10 +120,23 @@ # Use the following ssh options. my $ssh_opts = "-x -o BatchMode=yes -o ConnectTimeout=$timeout -l $ssh_user"; -unless ($cmd) { - die("error: no command defined!\nTry \"--help\" for more options.\n"); +if ($cmd) { + SystemImager::HostRange::thread_pool_spawn('ssh', $ssh_opts, $cmd, @hosts); } else { - SystemImager::HostRange::thread_pool_spawn('ssh', $ssh_opts, $cmd, @hosts); + # Run in interactive mode. + while (-t STDIN) { + select(STDOUT); + print "si_psh> "; + $_ = <STDIN>; + unless (defined($_)) { + print "\n"; + last; + } + if ((/^\s*$/) || (/^\s*exit\s*$/)) { + last; + } + SystemImager::HostRange::thread_pool_spawn('ssh', $ssh_opts, $_, @hosts); + } } __END__ |