簡體   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