Python執(zhí)行ping操作的簡(jiǎn)單方法
1 基本信息
- 模塊主頁:[github]
- 類型:#第三方庫(kù)
2 安裝方法
pip install pythonping
3 一般使用
from pythonping import ping
@timer ?
def case1(): ?
? ? return (ping('www.baidu.com', verbose=True)) ?
@timer ?
def case2(): ?
? ? return ping('www.baidu.com', verbose=False)verbose=True:意味著輸出平的執(zhí)行過程,測(cè)試Case1:
--------------------------------------------------------------------------------
[case1] start at 2023-02-12 07:45:48.366523
Reply from 110.242.68.4, 29 bytes in 11.75ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
Reply from 110.242.68.4, 29 bytes in 11.32ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
函數(shù)[case1]執(zhí)行時(shí)間為:0.05608487129211426
函數(shù)[case1]執(zhí)行結(jié)果為:
Reply from 110.242.68.4, 29 bytes in 11.75ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
Reply from 110.242.68.4, 29 bytes in 11.32ms
Reply from 110.242.68.4, 29 bytes in 11.33msRound Trip Times min/avg/max is 11.32/11.43/11.75 ms
[case1] end at 2023-02-12 07:45:48.422608
--------------------------------------------------------------------------------
verbose=False:意味著不輸出執(zhí)行過程,測(cè)試Case2:
--------------------------------------------------------------------------------
[case2] start at 2023-02-12 07:45:48.422608
函數(shù)[case2]執(zhí)行時(shí)間為:0.04709315299987793
函數(shù)[case2]執(zhí)行結(jié)果為:
Reply from 110.242.68.4, 29 bytes in 11.41ms
Reply from 110.242.68.4, 29 bytes in 11.56ms
Reply from 110.242.68.4, 29 bytes in 12.15ms
Reply from 110.242.68.4, 29 bytes in 11.75msRound Trip Times min/avg/max is 11.41/11.72/12.15 ms
[case2] end at 2023-02-12 07:45:48.470690
--------------------------------------------------------------------------------
可以看出,case1有執(zhí)行過程,但是case2沒有。
4 ping的返回值
ping的返回值是一個(gè)ResponseList對(duì)象,既然叫做List那么肯定是可以枚舉的。 我們來測(cè)試一下:
@timer
def case3():
print("STEP 1: ping www.baidu.com")
ping_rst = ping('www.baidu.com', verbose=False)
print("ping返回值的數(shù)據(jù)類型是:%s" % type(ping_rst))
print("STEP 2: 遍歷ResponseList對(duì)象的所有屬性")
for ping_item in ping_rst.__dict__:
print("[%s]:%s" % (ping_item, ping_rst.__dict__[ping_item]))
print("STEP 3: 遍歷Response對(duì)象的所有屬性")
cnt = 1
for response_item in ping_rst:
print("STEP 3-%s. Resoonse對(duì)象" % cnt)
cnt += 1
for item in response_item.__dict__:
print("[%s]:%s" % (item, response_item.__dict__[item]))4.1 返回值類型以及常用屬性
在例程3中, 第一步是執(zhí)行ping函數(shù),并且取得他的返回值。
第一步的返回結(jié)果是:
STEP 1: ping www.baidu.com
ping返回值的數(shù)據(jù)類型是:<class 'pythonping.executor.ResponseList'>
以上表明, 返回的是pythonping內(nèi)部定義的一個(gè)對(duì)象。 既然如此,我們接下來看看一下這個(gè)對(duì)象的屬性,執(zhí)行結(jié)果如下:
STEP 2: 遍歷ResponseList對(duì)象的所有屬性
[_responses]:[Reply from 110.242.68.4, 29 bytes in 11.68ms, Reply from 110.242.68.4, 29 bytes in 11.39ms, Reply from 110.242.68.4, 29 bytes in 11.51ms, Reply from 110.242.68.4, 29 bytes in 11.82ms]
[stats_packets_sent]:4
[stats_packets_returned]:4
[verbose]:False
[output]:<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
[rtt_avg]:0.01159732499945676
[rtt_min]:0.011385000019799918
[rtt_max]:0.011815299978479743
在這次遍歷中,有一個(gè)內(nèi)部屬性_responses實(shí)際上就是4此ping請(qǐng)求的信息。 這里我們?nèi)粘J褂帽容^多的。就是三個(gè)rtt開頭的值,只是用方法直接作為屬性讀取即可。
關(guān)于RTT這個(gè)縮寫,我讀了pythonping的源碼,并滅有給出詳細(xì)的解釋。 于是我請(qǐng)教了ChatGPT,它的回答是:
RTT代表往返時(shí)間(Round Trip Time),即數(shù)據(jù)包從源傳輸?shù)侥康牡卦俜祷厮璧臅r(shí)間。RTT通常用于測(cè)量網(wǎng)絡(luò)延遲和網(wǎng)絡(luò)連接質(zhì)量。在網(wǎng)絡(luò)通信的上下文中,RTT是指從發(fā)送請(qǐng)求到接收相應(yīng)響應(yīng)之間經(jīng)過的時(shí)間。
4.2 ResponseList中的每個(gè)Response對(duì)象的屬性
這部分內(nèi)容在STEP 3中, 我遍歷了所有的屬性:
STEP 3-1. Resoonse對(duì)象
[message]:45 00 00 1d c1 52 00 00 35 01 1e 03 6e f2 44 04 c0 a8 32 ec 00 00 46 f9 7f 06 01 00 39
[time_elapsed]:0.01167790000909008
[source_request]:08 00 3e f9 7f 06 01 00 39
[repr_format]:legacy
STEP 3-2. Resoonse對(duì)象
......
這里面有4個(gè)屬性:
- message: 發(fā)送的內(nèi)容
- time_elapsed: 時(shí)間
- source_request:接收的信息
- repr_format: 如何將返回值變?yōu)槲淖至小?有兩個(gè)可能的屬性legacy以及None
4.3 pythonping.ping() 方法的常用形參包括:
- hostname: 目標(biāo)主機(jī)的域名或 IP 地址
- size: 發(fā)送的數(shù)據(jù)的大小,以字節(jié)為單位。默認(rèn)為 56 字節(jié)
- count: 要發(fā)送的請(qǐng)求的數(shù)量。默認(rèn)為 4 次
- timeout: 超時(shí)時(shí)間,以秒為單位。默認(rèn)為 1s
- verbose: 布爾值,用于指示是否顯示詳細(xì)的輸出。默認(rèn)為 False
到此這篇關(guān)于Python執(zhí)行ping操作的簡(jiǎn)單方法的文章就介紹到這了,更多相關(guān)Python執(zhí)行ping操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python趣味挑戰(zhàn)之實(shí)現(xiàn)簡(jiǎn)易版音樂播放器
小伙伴們天天學(xué)編程應(yīng)該都學(xué)累了,今天特地給大家整理了這篇文章,讓大家在學(xué)習(xí)的時(shí)候也收貨快樂,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-05-05
利用Python開發(fā)一個(gè)自動(dòng)答題程序
這篇文章主要為大家詳細(xì)介紹了如何利用Python開發(fā)一個(gè)自動(dòng)答題程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-02-02
Tensorflow2.4使用Tuner選擇模型最佳超參詳解
這篇文章主要介紹了Tensorflow2.4使用Tuner選擇模型最佳超參詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法
這篇文章主要介紹了python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python動(dòng)態(tài)網(wǎng)頁批量爬取
這篇文章主要介紹了python動(dòng)態(tài)網(wǎng)頁批量爬取的方法,主要針對(duì)四六級(jí)成績(jī)批量爬取,感興趣的小伙伴們可以參考一下2016-02-02
致Python初學(xué)者 Anaconda入門使用指南完整版
相信大多數(shù) Python 的初學(xué)者們都曾為環(huán)境問題而頭疼不已,但你并不孤獨(dú),大家都是這么折騰過來的。為了在入門時(shí)少走彎路,并且讓高漲的積極性不至于太受打擊,這里推薦使用 Anaconda 來管理你的安裝環(huán)境和各種工具包2018-04-04

