如何在 python 中检查 ping 的状态



我正在研究python项目,我需要ping一个ip address以检查它是在线还是离线。为此,我参考了大多数在线问题和答案。以下是我首先尝试的:

response = os.system("ping -c 1 " + ip_address)
if response == 0:
print("Online")
else:
print("Offline")

上面的方法工作正常,但如果我们有Reply from <ip>. Destination host unreachable,那么它也说Online实际上应该Offline

我尝试的另一种解决方案是检查 ping 命令的输出:

cmd = "ping -c 1 " + ip_address
res = (subprocess.check_output(cmd, shell=True))
res = res.decode("utf-8")
if 'unreachable' in res or 'timed out' in res or '100% packet loss' in res:
print("Offline")
else:
print("Online")

在这种方法中,我正在检查响应是否包含unreachabletimed out100% packet loss(仅在 linux 的情况下(,然后我说它的Offline否则Online.此解决方案在所有情况下都运行良好,但有时它会引发错误Command 'ping -c 1 <ip>' returned non-zero exit status 1.

我还需要确保我正在编写的代码应该同时适用于WindowsUbuntu

我无法理解检查ping响应并决定是Online还是Offline的最干净,最简单的方法是什么。谁能帮帮我。谢谢

查看 scapy python 库。

这里的第一个示例将为您提供有关如何解决 ping 问题的一些见解。

最新更新