Perl Requires Chilkat v9.5.0.79+
Chilkat2 Perl
Setting Environment Variables for SCP Transfers
See more SCP Examples
Demonstrates how to set remote environment variables for an SCP transfer.Note: Setting environment variables for SCP is only supported by some SSH servers.
Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
my $ssh = Chilkat2::Ssh->new;
# First connect to an SSH server.
my $success = $ssh->Connect('example.com', 22);
if (!$success) {
print $ssh->LastErrorText, "\n";
exit;
}
# Wait a max of 5 seconds when reading responses..
$ssh->IdleTimeoutMs(5000);
# Authenticate..
$success = $ssh->AuthenticatePw('myLogin', 'myPassword');
if (!$success) {
print $ssh->LastErrorText, "\n";
exit;
}
# After the SSH object is connected and authenticated, we use it
# as the underlying transport in our SCP object.
my $scp = Chilkat2::Scp->new;
$success = $scp->UseSsh($ssh);
if (!$success) {
print $scp->LastErrorText, "\n";
exit;
}
# Specify the environment variables to be set in JSON as follows.
# This example sets two environment variables. One is named "LCS_PASSWORD" and the other "MY_TEST_NAME".
my $jsonEnvVars = Chilkat2::JsonObject->new;
$jsonEnvVars->EmitCompact(0);
$jsonEnvVars->UpdateString('LCS_PASSWORD', 'secret');
$jsonEnvVars->UpdateString('MY_TEST_NAME', 'abc');
my $strEnvVars = $jsonEnvVars->Emit();
print $strEnvVars, "\n";
# Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
# prior to doing the upload or download.
$scp->SendEnv($strEnvVars);
# Do the upload..
my $remotePath = 'starfish.jpg';
my $localPath = 'qa_data/jpg/starfish.jpg';
$success = $scp->UploadFile($localPath, $remotePath);
if (!$success) {
print $scp->LastErrorText, "\n";
exit;
}
print "SCP upload file success.\n";
# Disconnect
$ssh->Disconnect();