【问题标题】:Using C# to check for an internet connection on a remote Server使用 C# 检查远程服务器上的 Internet 连接
【发布时间】:2013-05-24 14:43:21
【问题描述】:

我正在制作一个“健康指数”网站,可以向系统管理员显示我们的网络和数据服务器的健康状况。

我正在衡量的一些指标是:

  1. 服务器有多少磁盘空间?
  2. 服务器是否开启? (我可以从我的电脑上 ping 它吗)
  3. 特定的 Windows 服务是否按照我的预期运行?
  4. 网络服务器是否可以访问互联网?

到目前为止,我已经为 1-3 编写了 c# 函数。但是,我不知道如何解决 #4。

基本上,我想确定远程 Web 服务器是否可以访问 Internet。我不想只从我的计算机上 ping 服务器,因为这不能证明它是否可以访问互联网。

此 Web 服务器主要服务于“Intranet”网站...所以,我无法通过简单地在浏览器中访问它所服务的站点来证明该服务器具有 Internet。

有谁知道我如何使用 C# 来确定这个远程 Web 服务器是否可以访问互联网?

谢谢

【问题讨论】:

  • 是否允许将自定义代码放在 ping 互联网的服务器上,然后在某处查看这些结果?
  • 可以在远程机器上安装服务吗?如果是这样,您可以让远程机器与您联系,并且您知道它有连接。
  • 是的,我可以完全访问服务器...但我宁愿不创建整个 Windows 服务来执行此任务。我希望可能有更简单的方法。
  • 例如,在 powershell 中,我可以用这样的 1 行代码来完成:psexec \\MyWebServer ping www.google.com
  • @user952342 您可以使用 Process p = new Process() 运行 powershell 命令并解析输出。

标签: c# remote-server


【解决方案1】:

毫无疑问,您可以做所有这些事情,但有一些工具可以管理这类事情等等。

查看 SCOM。它允许您使用大量开箱即用的检查,添加您自己的复杂服务器网络并将其汇总到易于使用的仪表板、警报和报告系统中。

它不是免费的,但如果你有服务器,你可能有某种许可。它很可能比编写自己的东西更便宜,而且几乎可以肯定比你自己编写的东西更彻底、更健壮并且覆盖范围更广。

这可能不是您要寻找的答案,但请检查一下。

【讨论】:

    【解决方案2】:

    未经测试,但类似这样:

    var p = new Process
                {
                    StartInfo =
                        {
                            UseShellExecute = false,
                            RedirectStandardOutput = true,
                            RedirectStandardError = true,
                            RedirectStandardInput = true,
                            FileName = @"C:\path\to\PSTools\PsExec.exe",
                            Arguments = @"\\server cmd.exe ping www.google.com"
                        }
                };
            p.Start();
    
            string output = p.StandardOutput.ReadToEnd();
            string errormessage = p.StandardError.ReadToEnd();
    
            p.WaitForExit();
    
            Console.WriteLine(output);
            Console.WriteLine(errormessage);
    

    【讨论】:

      【解决方案3】:

      看起来有人在这里有一些代码:

      https://stackoverflow.com/a/2521961/1759812

      处理检查连接以及处理环回和其他此类项目。这是针对服务器本身的,不确定您是否可以远程获取此信息。

      【讨论】:

      • 这对于原始发布者的要求来说太低了;没有显示连接到更广泛的互联网。
      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 2015-04-23
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      相关资源
      最近更新 更多