in reply to Re: NET::SFTP::Foreign in perl
in thread NET::SFTP::Foreign in perl

Dear salva,
I too get this error - Password not requested as expected: -1

I am using Perl 5.8.9 and have installed Net-SFTP-Foreign-1.53, Expect-1.21 and IO-Tty-1.07. When I try to pass the password in the code itself, I get this error.

my $sftp = Net::SFTP::Foreign->new(abc@10.21.1.176', password => 'password', timeout => 300);

I opened the file Foreign.pm and found a method ipc_open2_bug_workaround(). Looks like this subroutine was meant for fixing the bug explained. Any idea why I still get the error.

Thanks in advance

Replies are listed 'Best First'.
Re^3: NET::SFTP::Foreign in perl
by salva (Canon) on Jul 22, 2009 at 11:12 UTC
    There was a regression on Net::SFTP::Foreign 1.53.

    The problem is solved in the new version 1.54_01 that I have just uploaded to CPAN.

      Dear Salva, Is there any way I can use Net::SFTP::Foreign (version 1.54) to connect to remote machine and then execute a shell script or any other command on the remote machine.

      I tried
      my $sftp = Net::SFTP::Foreign->new('user@10.21.1.176', password => $pass, open2_cmd => 'mkdir perl_sftp');

      But it gave me an error
      - Invalid option 'host' or bad combination of options at sftpCompatEx.pl line 21

      thanks
        No, the SFTP protocol does not allow arbitrary execution of commands on the remote side.

        My other module Net::OpenSSH, that integrates nicely with Net::SFTP::Foreign would allow you to do so. It needs a recent OpenSSH client and only works on Linux/Unix.

        Another options are Net::SSH2 (not completely stable yet) and Net::SSH::Perl.

        update: BTW, you can not run arbitrary commands on the remote side but you can create directories if that is all you want:

        $sftp->mkdir('/foo/bar');
        That option runs a command on the local machine. You want to use SSH to run commands on the remote machine, not SFTP.

        Update: salva is right though, SFTP does do mkdir

      Thanks a lot!