Pregunta

¿Hay una buena biblioteca de telnet, libre disponible para C # (no ASP .NET)? He encontrado algunos en Google, pero todas tienen un tema u otro (no apoyan de usuario / contraseña, no son compatibles con un modo de guión).

Estoy asumiendo que la EM todavía no ha incluido una biblioteca telnet como parte de la versión 3.5 de .NET, ya que no pude encontrar que si lo fuera. Me loooooove estar equivocado sin embargo.

¿Fue útil?

Solución

Mejor C # Telnet Lib que he encontrado se llama minimalista Telnet. Muy fácil de entender, usar y modificar. Funciona muy bien para los routers Cisco que necesita configurar.

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

Otros consejos

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

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 una biblioteca telnet volverá a ser parte de la BCL .Net, aunque tienes el apoyo toma casi lleno por lo que no sería demasiado difícil de emular a un cliente Telnet, Telnet en su aplicación general, es un legado y morir tecnología que existe, donde por lo general se encuentra detrás de una buena nueva fachada moderna. En términos de Unix / Linux variantes usted encontrará que la caja de la SSH y Telnet permite generalmente se considera una mala práctica.

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

No obstante, deberá poner en marcha su propio envoltorio para manejar eventos para la alimentación en la entrada de una manera guión.

acabé encontrando MinimalistTelnet y lo adaptó a mis usos. Terminé la necesidad de ser capaces de modificar en gran medida el código debido a que el dispositivo ** único que estoy tratando de conectar a.

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

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

Espero que esto ayude.

Saludos, Andy.

Otra, que es un proyecto antiguo, pero comparte el código fuente completo: http://telnetcsharp.codeplex.com/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top