Topic "SFTP connection with perl"

Author Message
sonax
[View user's profile]

Joined: 2014-05-16
Posts: 2
Location: Germany
I want connect with a perl script. I must use an proxy server. There ist no example for proxy and i have no idea.
Thank you for your answer.

My script for testing:

Code:
use strict;
use Win32::OLE;
use Win32::OLE::Const;
use Win32::OLE::Variant;
use feature qw(switch); # in order to use given
Win32::OLE->Initialize(Win32::OLE::COINIT_OLEINITIALIZE);

use constant
{
    TRUE  => Variant(VT_BOOL, 1),
    FALSE => Variant(VT_BOOL, 0)
};

sub session_Events()
{
    my ($obj, $event, @args) = @_;
 
    given ($event)
    {
        when ('FileTransferred')
        {
            my ($sender, $e) = @args;
            printf "%s => %s\n", ( $e->{'FileName'}, $e->{'Destination'} );
        }
    }
}
 
my $session = Win32::OLE->new('WinSCP.Session');
my $consts = Win32::OLE::Const->Load($session);
my $sessionOptions = Win32::OLE->new('WinSCP.SessionOptions');
 
$sessionOptions->{'Protocol'} = $consts->{'Protocol_Sftp'};
$sessionOptions->{'HostName'} = 'test.de';
$sessionOptions->{'UserName'} = 'user';
$sessionOptions->{'Password'} = 'passwort';

$session->Open( $sessionOptions);
 
# Upload files
my $transferOptions = Win32::OLE->new('WinSCP.TransferOptions');
$transferOptions->{'TransferMode'} = $consts->{'TransferMode_Binary'};
 
my $transferResult = $session->PutFiles('c:\\temp\\test.*', '/usr', FALSE, $transferOptions);

# Throw on any error
$transferResult->Check();
 
# Print results
my $items = Win32::OLE::Enum->new($transferResult->{'Transfers'});
my $item;
while (defined($item = $items->Next))
{
    print $item->{'FileName'} . "\n";
}
Advertisements
martin◆
[View user's profile]
Site Admin
Joined: 2002-12-10
Posts: 27059
Location: Prague, Czechia
Please read documentation:
https://winscp.net/eng/docs/rawsettings
_________________
Martin Prikryl
sonax
[View user's profile]

Joined: 2014-05-16
Posts: 2
Location: Germany
Solution for perl:

Code:
$sessionOptions->AddRawSettings('ProxyMethod','3');
$sessionOptions->AddRawSettings('ProxyHost', '?.?.?.?');
$sessionOptions->AddRawSettings('ProxyPort', '80');
$sessionOptions->AddRawSettings('ProxyUsername', '<usr>');
$sessionOptions->AddRawSettings('ProxyPassword', '<pw>');
Ajay

Guest


Hi, When using the sample code for WinSCP using Perl, i get an error

my $session = Win32::OLE->new('WinSCP.Session') || die "Can't create winscp sessoion: ", Win32::OLE->LastError;

Can't create winscp sessoion: Win32::OLE(0.1712) error 0x800401f3: "Invalid class string"
martin◆
[View user's profile]
Site Admin
Joined: 2002-12-10
Posts: 27059
Location: Prague, Czechia
Ajay wrote:
Hi, When using the sample code for WinSCP using Perl, i get an error

my $session = Win32::OLE->new('WinSCP.Session') || die "Can't create winscp sessoion: ", Win32::OLE->LastError;

Can't create winscp sessoion: Win32::OLE(0.1712) error 0x800401f3: "Invalid class string"

Did you register the WinSCP .NET assembly for COM (and for correct architecture)?
https://winscp.net/eng/docs/library_install
Ajay

Guest


Thanks Martin. That indeed was the cause of the failure. Registered the library and All sorted now.
Advertisements

You can post new topics in this forum

Search

What is WinSCP?

It is award-winning SFTP client, SCP client, FTPS client and FTP client integrated into one software program for file transfer to FTP server or secure SFTP server. [More]

And it's free!

Donate

About donations

$9   $19   $49   $99

About donations

Recommend

WinSCP Privacy Policy

WinSCP License