我有以下 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 操作?
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
据我所知,我们无法在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 失败,则会显示错误。所以你可以根据它来判断成功。
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消