PowerBuilder
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
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