Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let ssh = CkoSsh()!
// Connect to an SSH server:
var hostname: String?
var port: Int
// Hostname may be an IP address or hostname:
hostname = "192.168.1.108"
port = 22
success = ssh.connect(hostname: hostname, port: port)
if success != true {
print("\(ssh.lastErrorText!)")
return
}
// Wait a max of 5 seconds when reading responses..
ssh.idleTimeoutMs = 5000
// Authenticate using login/password:
success = ssh.authenticatePw(login: "myLogin", password: "myPassword")
if success != true {
print("\(ssh.lastErrorText!)")
return
}
// Open a session channel. (It is possible to have multiple
// session channels open simultaneously.)
var channelNum: Int
channelNum = ssh.openSessionChannel().intValue
if channelNum < 0 {
print("\(ssh.lastErrorText!)")
return
}
// 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:
var cmd1: String? = "dir"
// Do a nameserver lookup:
var cmd2: String? = "nslookup chilkatsoft.com"
// List a specific directory. Given that the shell is CMD.EXE, backslashes must
// be used:
var cmd3: String? = "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:
var cmd4: String? = "\"cd \\temp&&dir\""
// Here are two examples of command lines for <b>Linux/UNIX SSH servers</b>:
// Get a directory listing:
var cmd5: String? = "ls -l /tmp"
// Run a series of commands (syntax may depend on your default shell):
var cmd6: String? = "cd /etc; ls -la"
// Request a directory listing on the remote server:
// If your server is Windows, change the string from "ls" to "dir"
success = ssh.sendReqExec(channelNum: channelNum, command: "ls")
if success != true {
print("\(ssh.lastErrorText!)")
return
}
// Call ChannelReceiveToClose to read
// output until the server's corresponding "channel close" is received.
success = ssh.channelReceive(toClose: channelNum)
if success != true {
print("\(ssh.lastErrorText!)")
return
}
// Let's pickup the accumulated output of the command:
var cmdOutput: String? = ssh.getReceivedText(channelNum: channelNum, charset: "ansi")
if ssh.lastMethodSuccess != true {
print("\(ssh.lastErrorText!)")
return
}
// Display the remote shell's command output:
print("\(cmdOutput!)")
// Disconnect
ssh.disconnect()
}