Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set ssh [new_CkSsh]

# First connect to an SSH server.
set success [CkSsh_Connect $ssh "example.com" 22]
if {$success != 1} then {
    puts [CkSsh_lastErrorText $ssh]
    delete_CkSsh $ssh
    exit
}

# Wait a max of 5 seconds when reading responses..
CkSsh_put_IdleTimeoutMs $ssh 5000

# Authenticate..
set success [CkSsh_AuthenticatePw $ssh "myLogin" "myPassword"]
if {$success != 1} then {
    puts [CkSsh_lastErrorText $ssh]
    delete_CkSsh $ssh
    exit
}

# After the SSH object is connected and authenticated, we use it
# as the underlying transport in our SCP object.
set scp [new_CkScp]

set success [CkScp_UseSsh $scp $ssh]
if {$success != 1} then {
    puts [CkScp_lastErrorText $scp]
    delete_CkSsh $ssh
    delete_CkScp $scp
    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".
set jsonEnvVars [new_CkJsonObject]

CkJsonObject_put_EmitCompact $jsonEnvVars 0
CkJsonObject_UpdateString $jsonEnvVars "LCS_PASSWORD" "secret"
CkJsonObject_UpdateString $jsonEnvVars "MY_TEST_NAME" "abc"
set strEnvVars [CkJsonObject_emit $jsonEnvVars]

puts "$strEnvVars"

# Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
# prior to doing the upload or download.
CkScp_put_SendEnv $scp $strEnvVars

# Do the upload..
set remotePath "starfish.jpg"
set localPath "qa_data/jpg/starfish.jpg"
set success [CkScp_UploadFile $scp $localPath $remotePath]
if {$success != 1} then {
    puts [CkScp_lastErrorText $scp]
    delete_CkSsh $ssh
    delete_CkScp $scp
    delete_CkJsonObject $jsonEnvVars
    exit
}

puts "SCP upload file success."

# Disconnect
CkSsh_Disconnect $ssh

delete_CkSsh $ssh
delete_CkScp $scp
delete_CkJsonObject $jsonEnvVars