#!/usr/bin/perl
my $h="testapp01";
my $dirname="/home/wasbatsrv/tmp/testbak";
my $uid="wasbatsrv";
my @r_files= qx(ssh $uid\@$h 'find $dirname -type f');
my @remote_files;
# Munge filenames to commands:
my $x;
# The following is necessary because the values in @r_files have
# some kind of funky linefeed that chomp does not get rid of
foreach my $f (@r_files) {
$x = substr($f, 0, -1);
push @remote_files, $x;
}
my @commands = map { sprintf "mv -f '%s' '%s.bak'", $_, $_ } @remote_
+files;
print @commands, join "\n";
my $remote= \*STDOUT;
# Use this to actually do the remote execution:
open $remote, "| ssh -q -l $uid $h";
print { $remote } join "\n", @commands;
This is the result I get and the script never returns:
mv -f '/home/wasbatsrv/tmp/testbak/one.properties.bak' '/home/wasbatsrv/tmp/testbak/one.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/testbakr/three.properties.bak' '/home/wasbatsrv/tmp/testbak/testbakr/three.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/testbakr/four.properties.bak' '/home/wasbatsrv/tmp/testbak/testbakr/four.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/two.properties.bak' '/home/wasbatsrv/tmp/testbak/two.properties.bak.bak'cc_admin@ivlpvlq bin$ Pseudo-terminal will not be allocated because stdin is not a terminal.
^C
The following command does work when I run it alone:
ssh -q -l wasbatsrv testapp01 mv -f '/home/wasbatsrv/tmp/testbak/one.properties' '/home/wasbatsrv/tmp/testbak/one.properties.bak'
|