> Luke,
>
> Nope, this was the exact thing we were trying to get away
> from. Suppose I
> don't have space to store that file on the host box. We're
> doing it in
> stages now and I really want to get away from that since it
> increases disk
> activity on the host box during a full backup. Considering
> these are web
> servers I want to keep the disk activity as low as possible during the
> backup, if for nothing else than saving the wear and tear on
> these disks
> that are spinning 24/7/365 as it is. We almost moved the
> gzip to the backup
> server also but then we decided that that would put too much
> burden on the
> backup server it's self (since the backup server may actually
> be backing up
> multiple servers at a time). I can do this on the command line with a
> simple:
>
> ssh 1.1.1.1 "tar -cf - /home/$user | gzip" > /tmp/$user.tar.gz
>
> It seems to go straight to disk then, but I didn't like the
> idea of using
> that type of redirect here (and I'm not even sure if it's
> possible to do
> that properly in a perl script, besides that's not a very
> 'perl' way of
> doing it :-).
Well, the Net::SSH module is only a wrapper around the ssh program, and
it currently doesn't support sending the output of the command to a
file. If you look in the SSH module at the ssh() routine, you'll see
that it actually uses system() to run your command:
sub ssh {
my($host, @command) = @_;
@ssh_options = &_ssh_options unless @ssh_options;
my @cmd = ($ssh, @ssh_options, $host, @command);
warn "[Net::SSH::ssh] executing ". join(' ', @cmd). "\n"
if $DEBUG;
system(@cmd);
}
You could hack the above to do what you want, for instance if you add a
filehandle as an argument it could write ssh's stdout to that
filehandle.
Now, with the Net::SSH::Perl module, you might be able to use the sock()
routine to write/read data:
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new('1.1.1.1');
$ssh->login($user, $pass);
my $socket = $ssh->sock();
# do stuff with socket here - write your command to the socket, and read
the response to a file
Luke
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>