繁体   English   中英

如何检查 python 中的 ping 状态

[英]How to check the status of ping in python

我正在处理 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 Reply from <ip>. Destination host unreachable ,然后它也说Online而实际上它应该是Offline

我尝试的另一个解决方案是检查 ping 命令的 output:

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 的情况下),然后我说它的OfflineOnline 此解决方案在所有情况下都运行良好,但有时会引发错误Command 'ping -c 1 <ip>' returned non-zero exit status 1.

我还需要确保我正在编写的代码可以在WindowsUbuntu上运行。

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

查看scapy python 库。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM