# queueing msg len: 5, code:1, id:3 ... [1] 00 00 00 05 01 00 00 00 03 | ......... # waiting for message... [1] connection failed: bad remote message received #### use Net::SFTP::Foreign ; $Net::SFTP::Foreign::debug = 25; sub mget { my($mysftp) = shift; my($filename) = shift; my($remote_path) = shift ; my($local_path) = shift ; my $ls = $mysftp->ls(); chop $filename; foreach $ls (@$ls) { if ($ls->{filename} =~ m/$filename/) { $mysftp->get($ls->{filename}, $local_path . $ls->{filename}) or warn $mysftp->error; } } } my($sftp) ; # sftp object variable my($myhost) ; # hostname to connect to my($myuser) ; my($mypass) ; my($myremotedir) ; my($mylocaldir) ; my($myfilename) ; my($parameterfile) ; if ($#ARGV != 0) { die "usage: $ARGV[-1] \n $ARGV[0] --help for parameter file layout\n"; } if ($ARGV[0] eq "--help") { printf "usage: $ARGV[-1] \n" ; printf " parameter file layout:\n" ; printf "\n" ; printf "\n" ; printf "\n" ; printf "\n" ; printf "\n" ; printf "\n\n" ; exit() ; } $parameterfile = $ARGV[0] ; open (PARMFILE, $parameterfile) || die "couldn't open parameter file $parameterfile!\n" ; $myhost = ; $myuser = ; $mypass = ; $myremotedir = ; $mylocaldir = ; $myfilename = ; close(PARMFILE) ; chomp($myhost); chomp($myuser); chomp($mypass); chomp($myremotedir); chomp($mylocaldir); chomp($myfilename); if (substr($mylocaldir, -1) ne "/") { $mylocaldir .= "/" ; } $sftp = Net::SFTP::Foreign->new($myhost, user => $myuser, password => $mypass, more => '-v' ); $sftp->error and die "connection failed: " . $sftp->error(); print "sftp-status = " . $sftp->status(); mget($sftp,$myfilename,$myremotedir,$mylocaldir) ;