Components | All | New | MacOS | Windows | Linux | iOS | ||||
Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old |
SSH.Connect
Connects a new socket to the given IP & Port.
Component | Version | macOS | Windows | Linux | Server | iOS SDK |
SSH | 6.3 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Parameters
Parameter | Description | Example | Flags |
---|---|---|---|
SSH | The SSH session reference number from the plugin. | $ssh | |
IP | The IP to connect to. | "192.168.1.123" | |
Port | The port number to connect to. Default is 22 which is standard port for ssh. |
22 | Optional |
Timeout | The connection timeout in seconds for the TCP/IP connection. Default is 30 seconds. |
30 | Optional |
ProtocolPreference | Pass 4 to connect via IPv4. Pass 6 to connect via IPv6. Default is to try whatever the DNS suggests first. |
4 | Optional |
Result
Returns OK or error.
Description
Connects a new socket to the given IP & Port.Timeout defines timeout for connection in seconds. While waiting, the plugin yields time to other threads.
Version 6.3 now supports passing IPv4, iPv6, or a host name.
Examples
Connect to IP:
Set Variable [$r; Value:MBS( "SSH.Connect"; $ssh; "192.168.2.1" )]
Full example:
# Start a new SSH session
Set Variable [$ssh; Value:MBS( "SSH.New" )]
# Connect to an IP
Set Variable [$r; Value:MBS( "SSH.Connect"; $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"; $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"; $ssh )]
# We query supported authentication ways
Set Variable [$authuserlist; Value:MBS( "SSH.UserAuthList"; $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 > 0]
# Authenticate with password
Set Variable [$r; Value:MBS( "SSH.UserAuthPassword"; $ssh; SSH::Username; SSH::Password )]
If [MBS("IsError")]
Show Custom Dialog ["Connect error"; $r]
End If
Else If [$pos2 > 0]
# Authenticate with answering question. Plugin passes password for answer.
Set Variable [$r; Value:MBS( "SSH.UserAuthKeyboardInteractive"; $ssh; SSH::Username; SSH::Password )]
If [MBS("IsError")]
Show Custom Dialog ["Connect error"; $r]
End If
Else If [$pos3 > 0]
# Authenticate with public key file
Set Variable [$r; Value:MBS( "SSH.UserAuthPublicKey"; $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"; $ssh ) ≠ 1]
Show Custom Dialog ["Authentication"; "no authenticated. Supported ways: " & $authuserlist]
Else
# Start a new channel
Set Variable [$r; Value:MBS( "SSH.OpenSession"; $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"; $ssh; 10000; "UTF8" )]
If [MBS("iserror") = 0]
If [Length($newText) > 0]
Set Variable [$text; Value:$text & $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.Close"; $ssh )]
# Disconnect
Set Variable [$r; Value:MBS( "SSH.Disconnect"; $ssh )]
End If
End If
End If
# Release memory.
Set Variable [$r; Value:MBS( "SSH.Release"; $ssh )]
See also
- SQL.Connect
- SSH.Disconnect
- SSH.HostKey
- SSH.New
- SSH.Release
- SSH.SessionHandshake
- SSH.Tunnel.Run
- SSH.UserAuthKeyboardInteractive
- SSH.UserAuthList
- SSH.UserAuthPublicKey
Release notes
- Version 8.3
- Updated code for Socket.Connect, ServerSocket.SendQuery, SSH.Connect and SendCommand to use new unified socket connection code, which uses IPv4 and IPv6, queries DNS if needed and tries several IPs if needed.
- Version 7.2
- Added ProtocolPreference parameter to SSH.Connect and Socket.Connect to request IPv4 or IPv6.
Example Databases
Blog Entries
- MBS FileMaker Plugin, version 8.3pr3
- MBS FileMaker Plugin, version 7.2pr4
- MBS FileMaker Plugin 6.3 for OS X/Windows
- MBS FileMaker Plugin, version 6.3pr4
This function checks for a license.
Created 29th May 2016, last changed 4th December 2019