SSH.Execute
-----------

Executes something on the server.

| Component | Version | macOS | Windows | Linux | Server | iOS SDK |
|---|---|---|---|---|---|---|
| [SSH](component_SSH.md) | [6.3](newinversion63.md) | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |

MBS( "SSH.Execute"; SSH; Command ) 

**MBS**( **"SSH.Execute";** /\* Executes something on the server. \*/  
**$SSH**; /\* The SSH session reference number from the plugin. \*/   
**$Command**) /\* The command to execute.e.g. "ls" \*/ 

### Parameters

| Parameter | Description | Example |
|---|---|---|
| SSH | The SSH session reference number from the plugin. | $ssh |
| Command | The command to execute. | "ls" |

### Result

Returns OK or error.

### Description

Executes something on the server.  
### Examples

Run a command:

 Set Variable \[$r ; Value:MBS ( "SSH.Execute"; $ssh ; "whoami" )\]  
Full example:

 # Start a new SSH session   
Set Variable \[$ssh ; Value:MBS ( "[SSH.New](SSHNew.md)" )\]  
\# Connect to an IP   
Set Variable \[$r ; Value:MBS ( "[SSH.Connect](SSHConnect.md)"; $ssh ; SSH::Host ; SSH::Port )\]  
If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
Else  
 # Run the session handshake.   
 Set Variable \[$r ; Value:MBS ( "[SSH.SessionHandshake](SSHSessionHandshake.md)"; $ssh )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 Else  
 # We can show the hostkey. You can compare it to known hostkey.  
 Set Field \[SSH::HostKeyHash ; MBS ( "[SSH.HostKey](SSHHostKey.md)"; $ssh )\]  
 # We query supported authentication ways  
 Set Variable \[$authuserlist ; Value:MBS ( "[SSH.UserAuthList](SSHUserAuthList.md)"; $ssh ; SSH::Username )\]  
 Set Field \[SSH::UserAuthList ; $authuserlist \]  
 Set Variable \[$pos1 ; Value:Position ( $authuserlist ; "password"; 1; 1 )\]  
 Set Variable \[$pos2 ; Value:Position ( $authuserlist ; "keyboard-interactive"; 1; 1 )\]  
 Set Variable \[$pos3 ; Value:Position ( $authuserlist ; "publickey"; 1; 1 )\]  
 If \[$pos1 &gt; 0\]  
 # Authenticate with password  
 Set Variable \[$r ; Value:MBS ( "[SSH.UserAuthPassword](SSHUserAuthPassword.md)"; $ssh ; SSH::Username ; SSH::Password )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 End If  
 Else If \[$pos2 &gt; 0\]  
 # Authenticate with answering question. Plugin passes password for answer.  
 Set Variable \[$r ; Value:MBS ( "[SSH.UserAuthKeyboardInteractive](SSHUserAuthKeyboardInteractive.md)"; $ssh ; SSH::Username ; SSH::Password )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 End If  
 Else If \[$pos3 &gt; 0\]  
 # Authenticate with public key file  
 Set Variable \[$r ; Value:MBS ( "[SSH.UserAuthPublicKey](SSHUserAuthPublicKey.md)"; $ssh ; SSH::Username ; "your key path"; "your key path"; SSH::Password )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 End If  
 End If  
 If \[MBS ( "[SSH.IsAuthenticated](SSHIsAuthenticated.md)"; $ssh ) ≠ 1\]  
 Show Custom Dialog \["Authentication"; "no authenticated. Supported ways: " &amp; $authuserlist \]  
 Else  
 # Start a new channel  
 Set Variable \[$r ; Value:MBS ( "[SSH.OpenSession](SSHOpenSession.md)"; $ssh )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 Else  
 # Execute a command  
 Set Variable \[$r ; Value:MBS ( "SSH.Execute"; $ssh ; SSH::Command )\]  
 If \[MBS ("IsError")\]  
 Show Custom Dialog \["Connect error"; $r \]  
 Else  
 # We read text in several chunks until no new text is coming any more:  
 Set Variable \[$text ; Value:""\]  
 Loop  
 Pause/Resume Script \[Duration (seconds): ,1\]  
 # Read some text:  
 Set Variable \[$newtext ; Value:MBS ( "[SSH.ReadText](SSHReadText.md)"; $ssh ; 10000; "UTF8" )\]  
 If \[MBS ("iserror") = 0\]  
 If \[Length($newText ) &gt; 0\]  
 Set Variable \[$text ; Value:$text &amp; $newText \]  
 End If  
 Exit Loop If \[Length($newText ) = 0\]  
 End If  
 End Loop  
 Set Field \[SSH::Result ; $text \]  
 End If  
 End If  
 # Close channel  
 Set Variable \[$r ; Value:MBS ( "[SSH.CloseChannel](SSHCloseChannel.md)"; $ssh )\]  
 # Disconnect  
 Set Variable \[$r ; Value:MBS ( "[SSH.Disconnect](SSHDisconnect.md)"; $ssh )\]  
 End If  
 End If  
End If  
\# Release memory.   
Set Variable \[$r ; Value:MBS ( "[SSH.Release](SSHRelease.md)"; $ssh )\]  
### See also

- [SSH.CloseChannel](SSHCloseChannel.md)
- [SSH.Disconnect](SSHDisconnect.md)
- [SSH.HostKey](SSHHostKey.md)
- [SSH.New](SSHNew.md)
- [SSH.ReadText](SSHReadText.md)
- [SSH.Release](SSHRelease.md)
- [SSH.SessionHandshake](SSHSessionHandshake.md)
- [SSH.UserAuthKeyboardInteractive](SSHUserAuthKeyboardInteractive.md)
- [SSH.UserAuthList](SSHUserAuthList.md)
- [SSH.UserAuthPublicKey](SSHUserAuthPublicKey.md)

### Example Databases

- [Network/SSH](https://www.mbsplugins.eu/MBS-FileMaker-Plugin-Examples/Network/SSH.shtml#1ScriptAnchor_)

### Blog Entries

- [MBS FileMaker Plugin 6.3 for OS X/Windows](https://www.mbsplugins.de/archive/2016-07-12/MBS_FileMaker_Plugin_63_for_OS/monkeybreadsoftware_blog_filemaker)

This function checks for a license.

Created 29th May 2016 , last changed 12nd November 2017

  
[SSH.EOF](SSHEOF.md) - [SSH.Flush](SSHFlush.md)

[HTML Version](SSHExecute.shtml)