in reply to Re: scp output without having to use "Net::SCP" in Perl
in thread scp output without having to use "Net::SCP" in Perl

stevieb, $output is the output of a command, for example, let's say $output = `ls -ltra /tmp`; Thanks, -- pjzero@90
  • Comment on Re^2: scp output without having to use "Net::SCP" in Perl

Replies are listed 'Best First'.
Re^3: scp output without having to use "Net::SCP" in Perl
by salva (Canon) on Jun 03, 2015 at 07:38 UTC
    Then try something like this:
    system("ls -lrta /tmp | ssh $user\@$host 'cat >/tmp/LOGS/'");

    You can not use scp to copy data from an scalar in the process memory. It only works for files stored in the file system.

Re^3: scp output without having to use "Net::SCP" in Perl
by sierpinski (Chaplain) on Jun 03, 2015 at 01:46 UTC

    You're trying to scp a command, and the output, to another host? Try breaking that up into separate tasks -- this is what /tmp is for. Connect via ssh to the host and run your command, redirecting the output to /tmp/someuniquefile, then scp the file to whatever location you want. When you start introducing commands with pipes and such in variables for remote execution, the complexity increases. Do one task at a time, and you can manually verify that they work separately.

    Edit: I misread a piece -- you don't scp data, you scp a file. Save the output to /tmp/something, and scp that.
      Let's try this again, I do a ssh over to a host, and grab certain files from /tmp, this works fine, I then want to send these logs to a second host. my @OUTPUT = `ssh $USER\@$host ls -ltr /tmp | grep logs`; foreach my $output (@OUTPUT) { chomp ($output); system("/usr/bin/scp", "--", $output, "user\@host:/home/user/logs"; } I now get "No such file or directory", so your right, I need to put the log itself into a file, any ideas or should I use a different approach? Thanks, -- pjzero@90

        Have you read all the advice you have been given? Your ls -ltr command is returning all sorts of information: file privileges, file owner, size, modification date, file name. I don't think you want or need all that, and scp certainly is confused by it. Use ls -1tr instead. It will return the file name only.

        Dum Spiro Spero