Bibliothèque C # Telnet

Existe-t-il une bonne bibliothèque telnet disponible pour C # (pas ASP .NET)? J’ai trouvé quelques sur Google, mais ils ont tous un problème ou un autre (ne supporte pas le login / mot de passe, ne supporte pas un mode scripté).

Je suppose que MS n’a toujours pas inclus une bibliothèque telnet dans .NET v3.5 car je ne l’ai pas trouvé si c’était le cas. Je loooooove d’être faux cependant.

Best C # Telnet Lib que j’ai trouvé s’appelle Minimalistic Telnet. 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

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(ssortingng[] 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(ssortingng user, ssortingng passwd) { bool i = true; while (i) { Console.WriteLine("Connecting....."); Byte[] output = new Byte[1024]; Ssortingng responseoutput = Ssortingng.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.GetSsortingng(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.GetSsortingng(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.GetSsortingng(output, 0, bytes); Console.Write("Responseoutput: " + responseoutput); objToMatch = new Regex("#"); if (objToMatch.IsMatch(responseoutput)) { i = false; } } Console.WriteLine("Just works"); } } 

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

Je doute fort qu’une bibliothèque telnet fasse jamais partie de la BCL .Net, bien que vous ayez un support de socket presque complet, il ne serait pas trop difficile d’émuler un client telnet. Telnet dans son implémentation générale est une technologie héritée existe généralement derrière une belle nouvelle façade moderne. En ce qui concerne les variantes Unix / Linux, vous trouverez que le SSH et l’activation de telnet sont généralement considérés comme une mauvaise pratique.

Vous pouvez vérifier: 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 à utiliser en entrée de manière scriptée.

J’ai fini par trouver MinimalistTelnet et l’ai adapté à mes utilisations. J’ai fini par devoir pouvoir modifier fortement le code en raison du périphérique unique ** que je tente de joindre.

** Unique dans ce cas peut être valablement interprété comme cerveau-mort.

J’évalue actuellement deux bibliothèques Telnet C # .NET (v2.0) susceptibles d’intéresser:

J’espère que cela t’aides.

Cordialement, Andy.

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