猿问

来自 Azure Function 的 Ping 服务器

我有以下 Azure 函数,由于访问被拒绝而失败 (忽略逻辑很奇怪的事实,我只是在做第一个测试)


public static void Run(TimerInfo myTimer, ILogger log)

{

    List<string> servers = new List<string>()

    {

        "server1"

    };


    foreach(string server in servers)

    {

        if (!Ping(server))

        {

            SendEmail($"Server {server} seems down.", log);

        }

    }

}


static bool Ping(string hostName)

{

    Ping pingSender = new Ping();

    int timeout = 120;

    PingReply reply = pingSender.Send(hostName, timeout);

    return reply.Status == IPStatus.Success;

}


static void SendEmail(string message, ILogger log)

{

    log.LogInformation(message);

}

如果我改变线路


PingReply reply = pingSender.Send(hostName, timeout);

return reply.Status == IPStatus.Success;

为了return true;测试,该功能运行良好。


我需要配置什么才能让该函数执行 ping 操作?


慕尼黑的夜晚无繁华
浏览 105回答 1
1回答

catspeake

据我所知,我们无法在Azure功能中成功执行ping操作,因为Azure中不允许使用ICMP协议。但我们可以在其中进行tcpping。您可以在Azure功能控制台中测试它(如下截图所示):我们还可以安装一些工具来进行 ping 操作,例如 PsPing、Nmap 或 Telnet。这是更新内容:根据一些研究,我认为Azure Function可以满足您的要求。首先,我们应该安装 psping。然后解压缩 psping 文件并在 Azure 函数中打开 Kudu。然后点击“调试控制台”-->“CMD”-->“site”,新建一个名为“tools”的文件夹,点击“tools”并将你的 psping 文件(PSTools)拖到“tools”文件夹中。之后,请参考我下面发布的代码如果 ping 成功,我的代码中的变量“err”将不会显示任何内容。如果 ping 失败,则会显示错误。所以你可以根据它来判断成功。
随时随地看视频慕课网APP
我要回答