C # Telnet Library - PullRequest
       38

C # Telnet Library

50 голосов
/ 24 декабря 2008

Есть ли хорошая, бесплатная библиотека telnet для C # (не ASP .NET)? Я нашел несколько в Google, но все они имеют одну или другую проблему (не поддерживают логин / пароль, не поддерживают режим сценариев).

Я предполагаю, что MS все еще не включила библиотеку telnet как часть .NET v3.5, поскольку я не смог найти ее, если бы она была. Но я ошибаюсь, что ошибаюсь.

Ответы [ 7 ]

46 голосов
/ 08 октября 2009

Лучший C # Telnet Lib, который я нашел, называется Minimalistic Telnet. Очень легко понять, использовать и изменять. Он отлично работает для маршрутизаторов Cisco, которые мне нужно настроить.

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

6 голосов
/ 12 января 2012

Вот мой код, который наконец-то работает

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");
}
}
3 голосов
/ 19 июня 2010

Еще один с другой концепцией: http://www.klausbasan.de/misc/telnet/index.html

1 голос
/ 11 января 2011

Еще один, это более старый проект, но с общим исходным кодом: http://telnetcsharp.codeplex.com/

1 голос
/ 23 марта 2009

В настоящее время я оцениваю две библиотеки .NET (v2.0) C #, которые могут представлять интерес:

Надеюсь, это поможет.

С уважением, Энди.

1 голос
/ 24 декабря 2008

В итоге я нашел MinimalistTelnet и адаптировал его для своих нужд. В итоге мне понадобилась возможность сильно изменить код из-за уникального ** устройства, к которому я пытаюсь подключиться.

** Уникальный в этом случае может быть правильно истолкован как мертвый мозг.

1 голос
/ 24 декабря 2008

Я очень сомневаюсь, что библиотека telnet когда-либо станет частью .Net BCL, хотя у вас есть почти полная поддержка сокетов, поэтому эмулировать клиент telnet не составит большого труда, Telnet в его общей реализации является наследием и умирает Технология, которая там, где есть, обычно стоит за красивым новым современным фасадом. С точки зрения вариантов Unix / Linux вы обнаружите, что из коробки его SSH и включение telnet обычно считается плохой практикой.

Вы можете проверить: http://granados.sourceforge.net/ - Библиотека SSH для .Net http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh

Вам все еще нужно будет установить собственную оболочку для обработки событий для ввода в виде сценария.

...