从 Azure Function 中 Ping 服务器
Ping server from Azure Function
我有以下 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 操作?
据我所知,我们无法在 Azure 函数中成功执行 ping 操作,因为 Azure 中不允许使用 ICMP 协议。但是我们可以在里面做tcpping。你可以在Azure函数控制台中测试它(如下截图所示):
我们也可以安装一些工具来做ping操作,比如PsPing,Nmap,或者Telnet。
更新如下:
根据一些研究,我认为 Azure Function 可以满足您的要求。
首先,我们应该安装psping。您可以在此页面下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psping#installation
然后解压 psping 文件并在您的 Azure 函数中打开 Kudu。
然后点击"Debug console" --> "CMD" --> "site",新建一个名为"tools"的文件夹,点击"tools"并拖动你的psping文件(PSTools) 到 "tools" 文件夹。
之后请参考我下面的代码post
如果 ping 成功,我代码中的变量 "err" 将不显示任何内容。如果 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 操作?
据我所知,我们无法在 Azure 函数中成功执行 ping 操作,因为 Azure 中不允许使用 ICMP 协议。但是我们可以在里面做tcpping。你可以在Azure函数控制台中测试它(如下截图所示):
更新如下:
根据一些研究,我认为 Azure Function 可以满足您的要求。
首先,我们应该安装psping。您可以在此页面下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psping#installation
然后解压 psping 文件并在您的 Azure 函数中打开 Kudu。
然后点击"Debug console" --> "CMD" --> "site",新建一个名为"tools"的文件夹,点击"tools"并拖动你的psping文件(PSTools) 到 "tools" 文件夹。
之后请参考我下面的代码post
如果 ping 成功,我代码中的变量 "err" 将不显示任何内容。如果 ping 失败,它将显示错误。所以你可以根据它来判断成功。