c# - example - minimalistic telnet
Biblioteca C#Telnet (7)
Actualmente estoy evaluando dos bibliotecas .NET (v2.0) C # Telnet que pueden ser de su interés:
Espero que esto ayude.
Saludos, Andy.
¿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.
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");
}
}
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.
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.
Otro con un concepto diferente: http://www.klausbasan.de/misc/telnet/index.html
Otro, es un proyecto anterior, pero comparte el código fuente completo: http://telnetcsharp.codeplex.com/
Terminé encontrando http://www.codeproject.com/KB/IP/MinimalisticTelnet.aspx 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.