.net C#远程登录库

e4eetjau  于 2023-03-20  发布在  .NET
关注(0)|答案(7)|浏览(210)

有没有一个好的,免费的telnet库可用于C#(不是ASP.NET)?我在谷歌上找到了一些,但他们都有这样或那样的问题(不支持登录/密码,不支持脚本模式)。
我假设微软仍然没有包括telnet库作为.NET v3.5的一部分,因为我找不到它,如果它是。

9udxz4iz

9udxz4iz1#

我找到的最好的C# Telnet库叫做Minimalistic Telnet。非常容易理解,使用和修改。它对我需要配置的Cisco路由器非常有效。

1dkrff03

1dkrff032#

下面是我的代码,它终于可以工作了

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

ss2ws0br4#

我最终找到了MinimalistTelnet并将其适应我的用途。由于我试图连接的唯一**设备,我最终需要能够大量修改代码。

**在这种情况下,唯一可有效解释为脑死亡。

i2loujxw

i2loujxw5#

我目前正在评估两个可能感兴趣的.NET(v2.0)C# Telnet库:

希望这个有用。
你好,安迪。

0yycz8jy

0yycz8jy6#

另一个,它是一个较老的项目,但共享完整的源代码:http://telnetcsharp.codeplex.com/

r55awzrz

r55awzrz7#

我非常怀疑telnet库是否会成为. NetBCL的一部分,尽管您确实拥有几乎完全的套接字支持,因此模拟telnet客户机并不太困难,Telnet在它的一般实现中是一个遗留的和垂死的技术,存在的地方通常位于一个漂亮的新的现代门面后面。我会发现开箱即用SSH和启用telnet通常被认为是不好的做法。
您可以查看:http://granados.sourceforge.net/-用于.Net http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh的SSH库
您仍然需要放置自己的 Package 器来处理事件,以便以脚本方式提供输入。

相关问题