Sample code for 30+ languages & platforms
PowerBuilder

SSH Exec (Execute Command Line)

See more SSH Examples

Shows how to execute a command on an SSH server and retrieve the command output.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Ssh
string ls_Hostname
integer li_Port
integer li_ChannelNum
string ls_Cmd1
string ls_Cmd2
string ls_Cmd3
string ls_Cmd4
string ls_Cmd5
string ls_Cmd6
string ls_CmdOutput

li_Success = 0

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

loo_Ssh = create oleobject
li_rc = loo_Ssh.ConnectToNewObject("Chilkat.Ssh")
if li_rc < 0 then
    destroy loo_Ssh
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Connect to an SSH server:

// Hostname may be an IP address or hostname:
ls_Hostname = "192.168.1.108"
li_Port = 22

li_Success = loo_Ssh.Connect(ls_Hostname,li_Port)
if li_Success <> 1 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// Wait a max of 5 seconds when reading responses..
loo_Ssh.IdleTimeoutMs = 5000

// Authenticate using login/password:
li_Success = loo_Ssh.AuthenticatePw("myLogin","myPassword")
if li_Success <> 1 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// Open a session channel.  (It is possible to have multiple
// session channels open simultaneously.)

li_ChannelNum = loo_Ssh.OpenSessionChannel()
if li_ChannelNum < 0 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// The SendReqExec method starts a command on the remote
// server.   The syntax of the command string depends on the
// default shell used on the remote server to run the command.
// On Windows systems it is CMD.EXE.  On UNIX/Linux
// systems the user's default shell is typically defined in /etc/password.

// Here are some examples of command lines for <b>Windows SSH servers</b>:

// Get a directory listing:
ls_Cmd1 = "dir"

// Do a nameserver lookup:
ls_Cmd2 = "nslookup chilkatsoft.com"

// List a specific directory.  Given that the shell is CMD.EXE, backslashes must
// be used:
ls_Cmd3 = "dir \~temp"

// Execute a sequence of commands.  The syntax for CMD.EXE may be found
// here: http://technet.microsoft.com/en-us/library/bb490880.aspx.  Notice how the commands
// are separated by "&&" and the entire command must be enclosed in quotes:
ls_Cmd4 = "~"cd \~temp&&dir~""

// Here are two examples of command lines for <b>Linux/UNIX SSH servers</b>:

// Get a directory listing:
ls_Cmd5 = "ls -l /tmp"

// Run a series of commands (syntax may depend on your default shell):
ls_Cmd6 = "cd /etc; ls -la"

// Request a directory listing on the remote server:
// If your server is Windows, change the string from "ls" to "dir"
li_Success = loo_Ssh.SendReqExec(li_ChannelNum,"ls")
if li_Success <> 1 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// Call ChannelReceiveToClose to read 
// output until the server's corresponding "channel close" is received.
li_Success = loo_Ssh.ChannelReceiveToClose(li_ChannelNum)
if li_Success <> 1 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// Let's pickup the accumulated output of the command:
ls_CmdOutput = loo_Ssh.GetReceivedText(li_ChannelNum,"ansi")
if loo_Ssh.LastMethodSuccess <> 1 then
    Write-Debug loo_Ssh.LastErrorText
    destroy loo_Ssh
    return
end if

// Display the remote shell's command output:
Write-Debug ls_CmdOutput

// Disconnect
loo_Ssh.Disconnect()


destroy loo_Ssh