Sample code for 30+ languages & platforms
Perl Requires Chilkat v9.5.0.79+

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

Chilkat2 Perl
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();