diff -r e7973168471d -r 19ba8f130480 send-config.pl --- a/send-config.pl Wed Jul 28 13:25:06 2010 +0200 +++ b/send-config.pl Thu Jul 07 10:11:36 2011 +0200 @@ -1,11 +1,13 @@ #!/usr/bin/perl -w use strict; +use warnings; + use File::Basename; use Pod::Usage; use Getopt::Long; use Config::Tiny; -use Net::SSH qw(sshopen2); +use Net::SSH qw(ssh_cmd); use Sys::Hostname::Long; use Socket; use IO::File; @@ -62,15 +64,15 @@ my $dest_path = $path . $source_host; # create remote destination directory - my $command = "mkdir -m 0700 -p $dest_path"; + my $ssh_cmd_args = { + user => $username, + host => $dest, + command => 'mkdir', + args => [ '-m 0700', "-p $dest_path" ], + }; + ssh_cmd $ssh_cmd_args unless $opt_dry_run; - unless ($opt_dry_run) { - sshopen2( "$username\@$dest", *READER, *WRITER, "$command" ) - || die "ssh: $!"; - } - debug("PROG ssh command: ssh $username\@$dest $command") if $opt_debug; - close(READER); - close(WRITER); + debug("PROG ssh command: ssh $username\@$dest $ssh_cmd_args->{command} ", join ' ', @{$ssh_cmd_args->{args}}) if $opt_debug; rsync( $username, $dest, $dest_path, $stamp ); @@ -145,6 +147,7 @@ open( STDERR, ">&TMP" ) or die "$!"; open( STDOUT, ">/dev/null" ) unless $opt_verbose; exec @cmd; + warn "Failed to exec '", join ' ', @cmd, "': $!\n"; } else { waitpid $pid, 0; @@ -159,10 +162,9 @@ unlink "/tmp/$ME.$$"; while () { - if (/(.*)(?<=failed:)\s+(.*)\s*\(\d+\)/) { - push @status, "[WARNING] $1 $2" - unless ( $opt_keepgoing and !$opt_dry_run ); - } + chomp; + push @status, "[WARNING] $_" + unless $opt_keepgoing and !$opt_dry_run; } close(TMP); }