Terminal Emulation Tutorial
Applies to: Rebex Total Pack, Rebex SSH Pack, Rebex Terminal Emulation
Table of content
#About Rebex Terminal Emulation
Rebex Terminal Emulation component is an SSH shell, Telnet and terminal emulation library for .NET languages (such as C# or VB.NET). It makes it easy to execute commands on Unix/Windows SSH or telnet servers and add terminal emulation capabilities to your applications.
SSH is nearly ubiquitous on Unix and Unix-like systems, with OpenSSH being the most common implementation. There is also a growing number of SSH servers for Windows as well.
Most SSH servers also implement SFTP - a powerful secure file transfer protocol. To take advantage of it, use our SFTP component. An SFTP + SSH bundle is also available.
#Namespaces and assemblies
To use the features of Terminal Emulation described here, you have to reference
the Rebex.Common.dll, Rebex.Networking.dll, Rebex.Telnet.dll, Rebex.SshShell.dll
and Rebex.Terminal.dll assemblies in your project.
These contain Ssh
, Shell
, TerminalControl
/SshTerminalControl
, VirtualTerminal
and other classes
in Rebex.Net and Rebex.TerminalEmulation namespaces.
In your source files, import the following namespace:
C#
using Rebex.Net; using Rebex.TerminalEmulation;
VB.NET
Imports Rebex.Net Imports Rebex.TerminalEmulation;
#Executing simple commands
Executing simple commands using SSH is very easy - just connect to the server, authenticate and call RunCommand
method.
C#
using (var ssh = new Rebex.Net.Ssh()) { // connect and log in ssh.Connect(serverName); ssh.Login(username, password); // execute a simple command string response = ssh.RunCommand("echo Hello world!"); // display the response Console.WriteLine(response); }
VB.NET
Using ssh = New Rebex.Net.Ssh() ' connect and log in ssh.Connect(serverName) ssh.Login(username, password) ' execute a simple command Dim response As String = ssh.RunCommand("echo Hello world!") ' display the response Console.WriteLine(response) End Using
Tip: RunCommand
can only be used to execute commands that don't require any user input. To script advanced commands,
use Scripting
object instead.
#Scripting complex commands
To execute more commands using a single shell, or to execute commands that actually need some kind of user input,
use the powerful Scripting
object:
C#
using (var ssh = new Rebex.Net.Ssh()) { // connect and log in ssh.Connect(serverName); ssh.Login(username, password); // start a scripting session Scripting scripting = ssh.StartScripting(); // automatically detect remote prompt scripting.DetectPrompt(); // execute command scripting.SendCommand("echo Hello world!"); // read its response string response = scripting.ReadUntilPrompt(); // execute more commands // ... // display the response Console.WriteLine(response); }
VB.NET
Using ssh = New Rebex.Net.Ssh() ' connect and log in ssh.Connect(serverName) ssh.Login(username, password) ' start a scripting session Dim scripting As Scripting = ssh.StartScripting() ' automatically detect remote prompt scripting.DetectPrompt() ' execute command scripting.SendCommand("echo Hello world!") ' read its response Dim response As String = scripting.ReadUntilPrompt() ' execute more commands ' ... ' display the response Console.WriteLine(response) End Using
Tip: Check out the list of Scripting
features.
Tip: The Scripting
object can be used to script TerminalControl
or VirtualTerminal
objects as well.
#More sample code
- Connecting to SSH and Telnet servers
- Authentication options
- Terminal Emulation
- Windows Forms Terminal Control
- Scripting
- Screen scraping
- Events
- Communication logging and replay
- Proxies and custom sockets
- Security
- SSH core
- Private keys
- SSIS, SQL CLR, PowerShell
- Standards and platform support
- Compatibility
Back to tutorial list...