Sample code for 30+ languages & platforms
PureBasic

SCP Upload File

See more SCP Examples

Demonstrates how to upload a file using the SCP protocol (Secure Copy Protocol over SSH).

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSsh.pb"
IncludeFile "CkScp.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ssh.i = CkSsh::ckCreate()
    If ssh.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Connect to an SSH server:
    hostname.s
    port.i

    ; Hostname may be an IP address or hostname:
    hostname = "www.some-ssh-server.com"
    port = 22

    success = CkSsh::ckConnect(ssh,hostname,port)
    If success <> 1
        Debug CkSsh::ckLastErrorText(ssh)
        CkSsh::ckDispose(ssh)
        ProcedureReturn
    EndIf

    ; Wait a max of 5 seconds when reading responses..
    CkSsh::setCkIdleTimeoutMs(ssh, 5000)

    ; Authenticate using login/password:
    success = CkSsh::ckAuthenticatePw(ssh,"myLogin","myPassword")
    If success <> 1
        Debug CkSsh::ckLastErrorText(ssh)
        CkSsh::ckDispose(ssh)
        ProcedureReturn
    EndIf

    ; Once the SSH object is connected and authenticated, we use it
    ; as the underlying transport in our SCP object.
    scp.i = CkScp::ckCreate()
    If scp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkScp::ckUseSsh(scp,ssh)
    If success <> 1
        Debug CkScp::ckLastErrorText(scp)
        CkSsh::ckDispose(ssh)
        CkScp::ckDispose(scp)
        ProcedureReturn
    EndIf

    remotePath.s = "test.txt"
    localPath.s = "/home/bob/test.txt"
    success = CkScp::ckUploadFile(scp,localPath,remotePath)
    If success <> 1
        Debug CkScp::ckLastErrorText(scp)
        CkSsh::ckDispose(ssh)
        CkScp::ckDispose(scp)
        ProcedureReturn
    EndIf

    Debug "SCP upload file success."

    ; Disconnect
    CkSsh::ckDisconnect(ssh)


    CkSsh::ckDispose(ssh)
    CkScp::ckDispose(scp)


    ProcedureReturn
EndProcedure