Question

Y at-il une bonne bibliothèque telnet libre disponible pour C # (non ASP .NET)? Je l'ai trouvé un peu sur google, mais ils ont tous un problème ou d'une autre (ne prennent pas en charge login / mot de passe, ne prennent pas en charge un mode scénarisé).

Je suppose que MS n'a pas encore fourni une bibliothèque telnet dans le cadre de v3.5 .NET comme je ne pouvais pas trouver si elle était. Je loooooove à tort cependant.

Était-ce utile?

La solution

Best C # Telnet Lib J'ai trouvé est appelé Minimaliste Telnet. Très facile à comprendre, utiliser et modifier. Il fonctionne très bien pour les routeurs Cisco que je dois configurer.

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

Autres conseils

Voici mon code qui fonctionne enfin

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

Je doute fort une bibliothèque telnet sera jamais partie du .Net BCL, bien que vous avez le soutien socket presque complet, donc ce ne serait pas trop difficile à imiter un client Telnet, Telnet dans sa mise en œuvre générale est un héritage et mourir technologie où existe se trouve généralement derrière une belle nouvelle façade moderne. En termes d'Unix / Linux variantes, vous trouverez que la boîte et son SSH permettant telnet est généralement considéré comme une mauvaise pratique.

Vous pouvez consulter: http://granados.sourceforge.net/ - Bibliothèque SSH pour .Net http://www.tamirgal.com/home/dev.aspx?Item= SharpSsh

Vous aurez toujours besoin de mettre en place votre propre emballage pour gérer les événements pour l'alimentation en entrée d'une manière scriptée.

J'ai fini par trouver MinimalistTelnet et adapté à mes usages. J'ai fini par avoir besoin de pouvoir modifier fortement le code en raison de l'appareil ** unique qui je tente de joindre à.

** Unique dans ce cas peut être valablement interprété comme mort cérébrale.

Je suis en train d'évaluer deux .NET (v2.0) C # bibliothèques Telnet qui peuvent vous intéresser:

Hope this helps.

Cordialement, Andy.

Un autre, il est un ancien projet, mais partage le code source complet: http://telnetcsharp.codeplex.com/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top