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.