Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Telnet Library

Tags:

c#

.net

telnet

Is there a good, free telnet library available for C# (not ASP .NET)? I have found a few on google, but they all have one issue or another (don't support login/password, don't support a scripted mode).

I am assuming that MS still has not included a telnet library as part of .NET v3.5 as I couldn't find it if it was. I would loooooove to be wrong though.

like image 261
salt.racer Avatar asked Dec 23 '08 21:12

salt.racer


2 Answers

Best C# Telnet Lib I've found is called Minimalistic Telnet. Very easy to understand, use and modify. It works great for the Cisco routers I need to configure.

http://www.codeproject.com/KB/IP/MinimalisticTelnet.aspx

like image 115
Richard Avatar answered Sep 20 '22 16:09

Richard


Here is my code that is finally working

using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions; using System.Threading;  class TelnetTest {      static void Main(string[] args)     {         TelnetTest tt = new TelnetTest();          tt.tcpClient = new TcpClient("myserver", 23);         tt.ns = tt.tcpClient.GetStream();          tt.connectHost("admin", "admin");         tt.sendCommand();          tt.tcpClient.Close();     }  public void connectHost(string user, string passwd) {     bool i = true;     while (i)     {         Console.WriteLine("Connecting.....");         Byte[] output = new Byte[1024];         String responseoutput = String.Empty;         Byte[] cmd = System.Text.Encoding.ASCII.GetBytes("\n");         ns.Write(cmd, 0, cmd.Length);          Thread.Sleep(1000);         Int32 bytes = ns.Read(output, 0, output.Length);         responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes);         Console.WriteLine("Responseoutput: " + responseoutput);         Regex objToMatch = new Regex("login:");         if (objToMatch.IsMatch(responseoutput)) {            cmd = System.Text.Encoding.ASCII.GetBytes(user + "\r");            ns.Write(cmd, 0, cmd.Length);         }          Thread.Sleep(1000);         bytes = ns.Read(output, 0, output.Length);         responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes);         Console.Write(responseoutput);         objToMatch = new Regex("Password");         if (objToMatch.IsMatch(responseoutput))         {             cmd = System.Text.Encoding.ASCII.GetBytes(passwd + "\r");             ns.Write(cmd, 0, cmd.Length);         }          Thread.Sleep(1000);         bytes = ns.Read(output, 0, output.Length);         responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes);         Console.Write("Responseoutput: " + responseoutput);          objToMatch = new Regex("#");         if (objToMatch.IsMatch(responseoutput))         {             i = false;         }      }      Console.WriteLine("Just works"); } } 
like image 36
Prakash Avatar answered Sep 18 '22 16:09

Prakash