web-dev-qa-db-fra.com

Bibliothèque Telnet C #

Existe-t-il une bonne bibliothèque Telnet gratuite disponible pour C # (pas ASP .NET)? J'en ai trouvé quelques-unes sur Google, mais elles ont toutes un problème ou un autre (ne supporte pas la connexion/mot de passe, ne prend pas en charge un mode scripté).

Je suppose que MS n'a toujours pas inclus de bibliothèque telnet dans le cadre de .NET v3.5 car je ne pouvais pas la trouver si elle l'était. Mais j'aimerais beaucoup avoir tort.

51
salt.racer

Le meilleur C # Telnet Lib que j'ai trouvé s'appelle Telnet minimaliste. Très facile à comprendre, à utiliser et à modifier. Cela fonctionne très bien pour les routeurs Cisco que je dois configurer.

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

47
Richard

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

Un autre avec un concept différent: http://www.klausbasan.de/misc/telnet/index.html

3
HOWA

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

1
Horst Walter

J'ai fini par trouver MinimalistTelnet et je l'ai adapté à mes utilisations. J'ai fini par avoir besoin de pouvoir modifier fortement le code en raison de l'appareil ** unique auquel j'essaie de me connecter.

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

1
salt.racer

Je doute fort qu'une bibliothèque telnet fasse jamais partie du .Net BCL, bien que vous ayez un support de socket presque complet, il ne serait donc pas trop difficile d'émuler un client telnet, Telnet dans son implémentation générale est une technologie héritée et mourante où existe généralement se trouve derrière une belle nouvelle façade moderne. En termes de variantes Unix/Linux, vous découvrirez que la SSH et l'activation de telnet sont généralement considérés 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 wrapper pour gérer les événements pour l'alimentation en entrée de manière scriptée.

1
Matt

J'évalue actuellement deux bibliothèques Telnet .NET (v2.0) C # qui pourraient vous intéresser:

J'espère que cela t'aides.

Cordialement, Andy.

1
MagicAndi