http://www.perlmonks.org?node_id=1027087


in reply to Perl SFTP do_mkdir not able to create directory

Use Net::SFTP::Foreign instead.

If you use it combined with Net::OpenSSH you will be even able to reuse the same SSH connections from all the threads:

use Net::OpenSSH; my $ssh = Net::OpenSSH->new($host, user => $InboundParameters[3], password => $InboundParameters[4]); # then from the threads call... sub sftp_task { my $sftp = $ssh->sftp; $sftp->mkdir("ftp2SAT5"); ... }

Replies are listed 'Best First'.
Re^2: Perl SFTP do_mkdir not able to create directory
by skylinedreamer (Novice) on Apr 09, 2013 at 02:07 UTC
    Hi salva,

    Thanks for your response. But I am trying to send the file to different hosts. So I wont be able to use the same SSH to do the task I presume.

      In that case, you can use Net::OpenSSH::Parallel:
      use Net::OpenSSH::Parallel; my $pssh = Net::OpenSSH::Parallel->new; $pssh->add_host($_) for @hosts; sub sftp_task { my ($host, $ssh) = @_; my $sftp = $ssh->sftp; $sftp->mkdir("ftp2SAT5") or die "unable to create directory: " . $sftp->error; } $pssh->all(parsub => &sftp_task); $pssh->run;
        Fixed the issue by using fork as suggested by salva.

        Thank you PerlMonks