ssh into remote nodes, do mulitple commands
ssh into remote nodes, do mulitple commands
am 30.01.2008 02:32:41 von Nene
Hello,
I'm trying to use Net::SSH to ssh into 3 nodes and move/copy files
with File::Copy. For now, I scripted it to find files of a certain
age and move them.
The $cmd variable is working, but when I try to move the files, it
errors with copy failed. Please critique or suggest a better way.
Thanks in advance!!!!
######################################################
#!/usr/bin/perl -w
use Net::SSH::Perl qw(sshopen2);
use strict;
my %LIST = (
1 => "node1",
2 => "node1",
3 => "node1"
);
foreach my $ESP (sort values %LIST) {
my $user = "user1";
my $host = $ESP;
my $cmd = "sudo find /somedir -name file.err -mtime 1 -exec ls -lt {}
';'";
sshopen2("$user\@$host", *READER, *WRITER, "$cmd") || die "ssh: $!";
print "Connected to $host\n";
while () {
if ( $_ ) {
use File::Copy;
move("/tmp/rod","/tmp/nasty") or die "Copy failed: $!";
}
}
}
Re: ssh into remote nodes, do mulitple commands
am 30.01.2008 15:07:41 von zentara
On Tue, 29 Jan 2008 17:32:41 -0800 (PST), Nene
wrote:
>Hello,
>
>I'm trying to use Net::SSH to ssh into 3 nodes and move/copy files
>with File::Copy. For now, I scripted it to find files of a certain
>age and move them.
>The $cmd variable is working, but when I try to move the files, it
>errors with copy failed. Please critique or suggest a better way.
>Thanks in advance!!!!
Try Net::SSH2 , its better. Sftp is incorporated
into it, and you probably want to use it for file transfers.
See:
http://perlmonks.org?node_id=569657
also ask on the SSH maillist
http://lists.sourceforge.net/lists/listinfo/ssh-sftp-perl-us ers
zentara
--
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html
Re: ssh into remote nodes, do mulitple commands
am 31.01.2008 17:12:08 von glex_no-spam
Nene wrote:
> Hello,
>
> I'm trying to use Net::SSH to ssh into 3 nodes and move/copy files
> with File::Copy. For now, I scripted it to find files of a certain
> age and move them.
> The $cmd variable is working, but when I try to move the files, it
> errors with copy failed. Please critique or suggest a better way.
[...]
> sshopen2("$user\@$host", *READER, *WRITER, "$cmd") || die "ssh: $!";
> print "Connected to $host\n";
>
> while () {
>
> if ( $_ ) {
> use File::Copy;
>
> move("/tmp/rod","/tmp/nasty") or die "Copy failed: $!";
>
> }
You're 'use'ing File::Copy on the machine that's running the script, not
on the remote host. So your 'move' is trying to move those files on the
host machine, not $host.
Probably easiest to just do "mv /tmp/rod /tmp/nasty" in another sshopen2
or better would be to modify the find command to move the files as
part of the exec, instead of ls -lt -- which is sort of useless.