Python中的 ping 模塊


模塊安裝

  1. 安裝模塊

pip install pythonping

  1. pythonping
  • pythonping 是 pytho n中 ping 的簡單方法。使用它,您可以像從終端發送 icmp 探測一樣將 icmp 探測發送到遠程設備。
  • pythonping 是模塊化的,因此您可以將它作為一個獨立的函數在腳本中運行,或者將其組件集成到一個成熟的應用程序中。

Ping 基本用法


from pythonping import ping

ping('8.8.8.8')

  • 上面這段代碼就是最簡單的ping使用,但是不會在控制台中看到任何輸出內容,因為ping默認情況下是靜默的,並且不會向屏幕打印任何內容
  • 如果我們想在屏幕上看到所有內容,我們可以簡單地使用 verbose 標志,該標志接受 bool 值參數

from pythonping import ping

ping('8.8.8.8', verbose=True)

  • 結果就會打印到屏幕上,如下所示
Reply from 8.8.8.8, 9 bytes in 70.51ms
Reply from 8.8.8.8, 9 bytes in 38.76ms
Reply from 8.8.8.8, 9 bytes in 42.33ms
Reply from 8.8.8.8, 9 bytes in 41.51ms

處理返回值

  1. 在屏幕上打印並不是我們一直想要的,這就是讓我們的腳本默認靜默的原因。相反,我們希望程序的其他部分使用 ping 的結果。

    • 例如,如果遠程設備不可用,我們可能需要運行腳本或向管理員發送電子郵件。
    • 如果延遲超過閾值,我們可能想要准備自定義操作,等等
  2. 正因為如此,Python 的 ping 返回值中,有你可能需要的所有細節,在自定義對象:ResponseList。此對象是一個可迭代對象,包含其他自定義對象、Response。

  3. 每個 Response 代表從給定的 ICMP 請求收到的響應。它包含其有效負載(消息)以及接收它所花費的時間

  4. 由於 Response 是一個對象,您可以從其成員中獲取其屬性:

    • error_message 包含描述此響應所代表的錯誤的字符串。例如,錯誤可能是“網絡無法訪問”或“需要分段”。如果您得到成功響應,則此屬性為None
    • success 是一個布爾值,指示響應是否成功
    • time_elapsedtime_elapsed_ms 分別以秒和毫秒表示收到此響應所需的時間
  5. 您可以通過訪問訪問各個響應 responses 的 ResponseList的對象,從返回ping。在這種情況下,responses只是一個列表。但是,responses 不能從外部訪問 ResponseList,應該 ResponseLis t直接使用。最重要的是,ResponseList 添加了一些可以直接使用的方法

  • rtt_avgrtt_avg_ms
  • rtt_minrtt_min_ms
  • rtt_maxrtt_max_ms
    (注釋:avg 代表 response 的平均值,同理 min 是最小值,max 是最大值;以 ms 結尾的代表返回的 response 以毫秒(ms)計算;沒有則以秒(s)計算)

高級Python ping

  1. "ping"的所有參數
  • ping() 函數還需要許多您可能想要指定的參數,如下所示
范圍 類型 描述
target str 要ping的遠程設備。這是唯一的強制性參數
timeout int 在考慮未收到的響應丟失之前多長時間,以秒為單位
count int 要按順序發送多少個ICMP數據包
size int 要發送的整個ICMP數據包的大小。
您可以將其保留為o (默認值) ,以根據有效負載調整大小,而不是相反。
payload str或者bytes 數據包的有效載荷。如果您還提供了有效載荷的大小,則將對其進行剪切或重復以匹配所需的大小。
sweep_start int 與一起使用sweep_end。它size通過將有效負載大小增加一個字節來忽略並發送每個后續數據包,
從sweep_ start大小開始一直到sweep_end大小。嘗試查找 MTU 時很有用。
df bool IP報頭的 Don't Fragment標志的值。如果設置為true,將啟用IP頭中的不分段標志
verbose bool 如果您希望將輸出打印到屏幕,則為True。默認為 False
out file 默認情況下,將詳細輸出結果輸出定向到sys.stdout;或者,您可能想在這里使用一個文件接受詳細輸出的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM