Sample code for 30+ languages & platforms
DataFlex

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

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vSsh
    Handle hoSsh
    Handle hoScp
    Handle hoJsonEnvVars
    String sStrEnvVars
    String sRemotePath
    String sLocalPath
    String sTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatSsh)) To hoSsh
    If (Not(IsComObjectCreated(hoSsh))) Begin
        Send CreateComObject of hoSsh
    End

    // First connect to an SSH server.
    Get ComConnect Of hoSsh "example.com" 22 To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Wait a max of 5 seconds when reading responses..
    Set ComIdleTimeoutMs Of hoSsh To 5000

    // Authenticate..
    Get ComAuthenticatePw Of hoSsh "myLogin" "myPassword" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // After the SSH object is connected and authenticated, we use it
    // as the underlying transport in our SCP object.
    Get Create (RefClass(cComChilkatScp)) To hoScp
    If (Not(IsComObjectCreated(hoScp))) Begin
        Send CreateComObject of hoScp
    End

    Get pvComObject of hoSsh to vSsh
    Get ComUseSsh Of hoScp vSsh To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoScp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // 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".
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonEnvVars
    If (Not(IsComObjectCreated(hoJsonEnvVars))) Begin
        Send CreateComObject of hoJsonEnvVars
    End
    Set ComEmitCompact Of hoJsonEnvVars To False
    Get ComUpdateString Of hoJsonEnvVars "LCS_PASSWORD" "secret" To iSuccess
    Get ComUpdateString Of hoJsonEnvVars "MY_TEST_NAME" "abc" To iSuccess
    Get ComEmit Of hoJsonEnvVars To sStrEnvVars

    Showln sStrEnvVars

    // Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
    // prior to doing the upload or download.
    Set ComSendEnv Of hoScp To sStrEnvVars

    // Do the upload..
    Move "starfish.jpg" To sRemotePath
    Move "qa_data/jpg/starfish.jpg" To sLocalPath
    Get ComUploadFile Of hoScp sLocalPath sRemotePath To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoScp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "SCP upload file success."

    // Disconnect
    Send ComDisconnect To hoSsh


End_Procedure