in reply to Re^2: net-sftp-foreign transfer failed vs file not present.
in thread net-sftp-foreign transfer failed vs file not present.

Hi,

I've just seen that your problem isn't solved yet, is it?

You get an exception, but this is what you've coded:

unless ($sftp->get("$file", "$local/$file")) { if (($sftp->error == SFTP_ERR_REMOTE_STAT_FAILED or $sftp->error == SFTP_ERR_REMOTE_OPEN_FAILED) and $sftp->status == SSH2_FX_NO_SUCH_FILE) { print "Remote file does not exist!"; } else { print "Transfer Failed"; } die $sftp->error; }

Independent from your if-clause you have a die at the end of your conditional block when get didn't work. More interesting would be to see whether you get the line "Remote file does not exist!".

Where does the message "Uncaught exception from user code: Couldn't stat remote file: No such file at ./datalex.pl line 37" come from? A wrapper?

Regards
McA

Replies are listed 'Best First'.
Re^4: net-sftp-foreign transfer failed vs file not present.
by mariog (Acolyte) on Aug 07, 2014 at 13:40 UTC

    Hello,

    I guess that removing the die outside the if solves the issue. I have other query.. how can I print the output of the sftp. when I execute a transfer in the command live and I get a file from the sftp I get this output on screen...
    sftp> get BookingReport_Daily_07-08-2014.xls Fetching /dlex/BookingReport_Daily_07-08-2014.xls to BookingReport_Dai +ly_07-08-2014.xls
    how can in perl achieve this and redirect that ouptut to a log file per instance.

      I get the feeling, that you start to think too complicated. When you use the sftp command line client it gives you some feedback about the fact that you have just downloaded a file with name 'x' and stored it somewhere locally with name 'y'. This is the same you want to do in your perl script. So, why don't you just simply print a message after you know you've transfered the file? You can also push the message on an internal message stack for later use.

      Regards
      McA