Biblioteca C # Telnet

¿Hay una buena biblioteca telnet gratuita disponible para C # (no ASP .NET)? He encontrado algunos en Google, pero todos tienen un problema u otro (no es compatible con el inicio de sesión / contraseña, no es compatible con un modo con guión).

Asumo que MS todavía no ha incluido una biblioteca de telnet como parte de .NET v3.5, ya que no pude encontrarla. Aunque me encantaría estar equivocado.

El mejor C # Telnet Lib que he encontrado se llama Minimalistic Telnet. Muy fácil de entender, usar y modificar. Funciona muy bien para los enrutadores de Cisco que necesito configurar.

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

Aquí está mi código que finalmente está funcionando

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"); } } 

Otro con un concepto diferente: http://www.klausbasan.de/misc/telnet/index.html

Dudo mucho que una biblioteca telnet alguna vez forme parte de .Net BCL, aunque usted tiene soporte de socket casi completo así que no sería demasiado difícil emular a un cliente telnet, Telnet en su implementación general es una tecnología heredada y en extinción donde existe generalmente se sienta detrás de una nueva fachada moderna agradable. En cuanto a las variantes de Unix / Linux, descubrirá que su SSH y telnet habilitante generalmente se consideran una mala práctica.

Puede consultar: http://granados.sourceforge.net/ – Biblioteca SSH para .Net http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh

Aún necesitará colocar su propio contenedor para manejar eventos para alimentar la entrada de una manera guionizada.

Terminé encontrando MinimalistTelnet y lo adapté a mis usos. Terminé necesitando poder modificar en gran medida el código debido al ** dispositivo único que estoy tratando de adjuntar.

** Único en este caso puede interpretarse válidamente como muerte cerebral.

Actualmente estoy evaluando dos bibliotecas .NET (v2.0) C # Telnet que pueden ser de su interés:

Espero que esto ayude.

Saludos, Andy.

Otro, es un proyecto anterior, pero comparte el código fuente completo: http://telnetcsharp.codeplex.com/