Sample code for 30+ languages & platforms
Perl

Setting Environment Variables for SCP Transfers

See more SCP Examples

Demonstrates how to set remote environment variables for an SCP transfer.

Note 1: This example requires Chilkat v9.5.0.79 or greater.

Note 2: Setting environment variables for SCP is only supported by some SSH servers.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$ssh = chilkat::CkSsh->new();

# First connect to an SSH server.
$success = $ssh->Connect("example.com",22);
if ($success != 1) {
    print $ssh->lastErrorText() . "\r\n";
    exit;
}

# Wait a max of 5 seconds when reading responses..
$ssh->put_IdleTimeoutMs(5000);

# Authenticate..
$success = $ssh->AuthenticatePw("myLogin","myPassword");
if ($success != 1) {
    print $ssh->lastErrorText() . "\r\n";
    exit;
}

# After the SSH object is connected and authenticated, we use it
# as the underlying transport in our SCP object.
$scp = chilkat::CkScp->new();

$success = $scp->UseSsh($ssh);
if ($success != 1) {
    print $scp->lastErrorText() . "\r\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".
$jsonEnvVars = chilkat::CkJsonObject->new();
$jsonEnvVars->put_EmitCompact(0);
$jsonEnvVars->UpdateString("LCS_PASSWORD","secret");
$jsonEnvVars->UpdateString("MY_TEST_NAME","abc");
$strEnvVars = $jsonEnvVars->emit();

print $strEnvVars . "\r\n";

# Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
# prior to doing the upload or download.
$scp->put_SendEnv($strEnvVars);

# Do the upload..
$remotePath = "starfish.jpg";
$localPath = "qa_data/jpg/starfish.jpg";
$success = $scp->UploadFile($localPath,$remotePath);
if ($success != 1) {
    print $scp->lastErrorText() . "\r\n";
    exit;
}

print "SCP upload file success." . "\r\n";

# Disconnect
$ssh->Disconnect();