Removed /usr/local from CDPATH
[clearscm.git] / test / testrexec.pl
index 5f35bc3..8f0388e 100755 (executable)
@@ -2,6 +2,9 @@
 use strict;
 use warnings;
 
+use Getopt::Long;
+use Pod::Usage; 
+
 use FindBin;
 
 use lib "$FindBin::Bin/../lib";
@@ -10,33 +13,51 @@ use Rexec;
 
 my ($status, $cmd, @output);
 
-my $hostname = $ENV{HOST}     || 'localhost';
-my $username = $ENV{USERNAME};
-my $password = $ENV{PASSWORD};
+my %opts = (
+  usage    => sub { podusage() } ,
+  hostname => $ENV{HOST}     || 'localhost',
+  username => $ENV{USERNAME} ? $ENV{USERNAME} : $ENV{USER},
+  password => $ENV{PASSWORD},
+  command  => 'ls /tmp',
+);
+
+GetOptions (
+  \%opts,
+  'usage',
+  'host=s',
+  'host=s',
+  'username=s',
+  'password=s',
+  'command=s'
+);
+
+if (@ARGV) {
+  $opts{command} = join ' ', @ARGV;
+} # if
+
+print "Attempting to connect to $opts{username}\@$opts{hostname} to execute \"$opts{command}\"\n";
 
 my $remote = Rexec->new (
-  host     => $hostname,
-  username => $username,
-  password => $password,
-  timeout  => 30,
+  host     => $opts{hostname},
+  username => $opts{username},
+  password => $opts{password},
 );
 
 if ($remote) {
-  print "Connected to $username\@$hostname using "
+  print "Connected to $opts{username}\@$opts{hostname} using "
       . $remote->{protocol} . " protocol\n";
-    
-  $cmd = "/bin/ls /nonexistent";
 
-  @output = $remote->execute ($cmd);
+  print "Executing command \"$opts{command}\" on $opts{hostname} as $opts{username}\n";    
+  @output = $remote->execute ($opts{command});
   $status = $remote->status;
 
-  print "$cmd status: $status\n";
-
-  $remote->print_lines;
+  print "\"$opts{command}\" status: $status\n";
 
-  print "$_\n" foreach ($remote->execute ('cat /etc/passwd'));
+  if (@output == 0) {
+    print "No lines of output received!\n";
+  } else {
+    print "$_\n" foreach (@output);
+  } # if
 } else {
-  print "Unable to connect to $username@$hostname\n";
-} # if
-
-
+  print "Unable to connect to $opts{username}\@$opts{hostname}\n";
+} # if
\ No newline at end of file