首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从远程服务器远程登录- c#

如何从远程服务器远程登录- c#
EN

Stack Overflow用户
提问于 2015-06-03 15:59:49
回答 2查看 2.2K关注 0票数 1

telnet新手。有一个服务器列表,我需要检查每个服务器是否能够成功地telnet到某个服务器(10.20.30.100)的端口(25)。

这个想法是让一个控制台应用程序从一个地方运行,它将检查所有列出的服务器。

遵循@freedomn-m的解决方案,但仍然卡住了。

代码语言:javascript
运行
复制
var centralServer = "10.20.30.100";
var centralPort = 25;

var servers = "11.12.13.201,11.12.13.202,11.12.13.203";
var telnetPort = 23;

foreach (var server in servers.Split(','))
{
    TcpClient tc = null;
    try
    {
        tc = new TcpClient(server, telnetPort);
        tc.Client.Send(System.Text.Encoding.ASCII.GetBytes("telnet " + centralServer + " " + centralPort));    

    }
    catch (SocketException se)
    {
        // telnet failed on 'server'
    }
    finally
    {
        if (tc != null)
        {
            tc.Close();
        }
    }
}

即使中心服务器或中心端口无效/不正确,也不会出现异常。代码仍会继续完成for循环。我无法知道服务器是否能够成功telnet。我应该如何继续下去。

EN

回答 2

Stack Overflow用户

发布于 2015-06-03 16:17:38

你不会“命令”远程服务器打开到telnet服务器的连接,然后用你现有的代码返回结果。如果服务器本身启用了telnet,则每台服务器可以通过3个步骤完成任务:

  1. 打开到'telnet client‘服务器的telnet连接
  2. 发送'telnet client’服务器命令打开到'telnet server‘服务器的telnet连接
  3. 检查是否成功。

有一个C# implementation of telnet protocol。但是您最好使用像Zabbix这样的监控解决方案。

票数 2
EN

Stack Overflow用户

发布于 2015-06-03 16:45:20

考虑一下在没有代码的情况下如何做到这一点。

正如您所描述的,您有许多服务器,每个服务器都需要能够telnet到中央服务器-并且您希望从单个位置检查它们是否可以。

在没有代码的情况下,您可以telnet到远程服务器,然后在该服务器上通过telnet客户端将telnet请求发送到目标服务器。(如果仅使用telnet,还有其他方法,如RPC)。

您不能在远程服务器上执行C#代码,除非您在那里部署您的应用程序(这是ofc的一个选项)。

更新您的代码:

代码语言:javascript
运行
复制
var centralServer = "10.20.30.100";
var centralPort = 25;   // 25 as per OP

var servers = "11.12.13.201,11.12.13.202,11.12.13.203";
var telnetPort = 23;

foreach (var server in servers.Split(','))
{
    TcpClient tc = null;
    try
    {
        tc = new TcpClient(server, telnetPort);
        tc.Client.Send(System.Text.Encoding.ASCII.GetBytes("telnet " + centralServer + " " + centralPort));

        // tc.Client.Receive
    }
    catch (SocketException se)
    {
        // telnet failed on 'server'
    }
    finally
    {
        if (tc != null)
        {
            tc.Close();
        }
    }
}

因为这个问题不是关于如何通过telnet发送/接收的,所以我把这个问题留给您来完成。

此外:还有许多C# telnet库,它们使连接/发送命令/接收响应变得更加容易。

编辑:更新端口以使用telnet端口。http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers根据原始开机自检,中央服务器端口可能是23或25。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30614152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档