web-dev-qa-db-ja.com

C#Telnetライブラリ

C#で利用できる優れた無料のtelnetライブラリはありますか(ASP .NET)ではありませんか?Googleでいくつか発見しましたが、すべてに問題があります(ログイン/パスワード、スクリプトモードはサポートしていません)。

MSには.net v3.5の一部としてtelnetライブラリが含まれていなかったため、それが見つからなかったため、まだ含まれていないと想定しています。しかし、私は間違っているのが大好きです。

51
salt.racer

私が見つけた最高のC#Telnet Libは、Minimalistic Telnetと呼ばれます。理解、使用、変更が非常に簡単です。これは、構成する必要があるCiscoルーターに最適です。

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

47
Richard

これが最終的に機能している私のコードです

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

別の概念を持つ別の例: http://www.klausbasan.de/misc/telnet/index.html

3
HOWA

もう1つは、古いプロジェクトですが、完全なソースコードを共有しています: http://telnetcsharp.codeplex.com/

1
Horst Walter

私は最終的に MinimalistTelnet を見つけ、それを自分の用途に適合させました。接続しようとしているユニークなデバイスのために、コードを大幅に変更する必要がありました。

**この場合のユニークは、脳死として有効に解釈できます。

1
salt.racer

Telnetライブラリが.Net BCLの一部になることは非常に疑わしいですが、ほとんど完全なソケットサポートがあるため、telnetクライアントをエミュレートするのはそれほど難しくありません。Telnetの一般的な実装はレガシーであり、死にかけている技術です一般的に、ニースの新しいモダンなファサードの後ろにあります。 Unix/Linuxの変種に関しては、SSHとtelnetの有効化は一般的に貧弱なプラクティスと見なされます。

あなたはチェックアウトすることができます: http://granados.sourceforge.net/ -.Net用のSSHライブラリ http://www.tamirgal.com/home/dev.aspx?Item= SharpSsh

スクリプト形式で入力をフィードするイベントを処理するには、独自のラッパーを配置する必要があります。

1
Matt

現在、2つの.NET(v2.0)C#Telnetライブラリを評価しています。

お役に立てれば。

よろしく、アンディ。

1
MagicAndi