客戶端Ping伺服器工具[Python]
要寫一個方便使用的客戶端ping伺服器的小工具,記錄一下關鍵的地方。這裡使用Python的subprocess模組呼叫系統命令ping.exe,利用正規表示式從輸出結果中提取需要的資訊。subprocess模組可以和開啟的子程式進行資料傳遞,非常方便。
這裡要注意的是,子程式要使用絕對路徑,不然在用py2exe打包後,會找不到可執行檔案。
COUNT = ‘10’
TIMEOUT = ‘6’
PING_EXE = 'C:\Windows\System32\PING.EXE'
SEP = os.linesep
p = subprocess.Popen(
[ PING_EXE, server, '-n', COUNT, '-w', TIMEOUT],
stderr=file('nul', 'a'),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
data = p.stdout.read().split(SEP)
data = data[-5:-1]
data
中儲存ping.exe輸出的內容,和在cmd.exe裡使用ping時的輸出內容一樣,最後幾行包含了此次ping的彙總資訊。輸出的結果是str型別,用換行符來截斷成list,根據最後4行來判斷ping的結果。應該會有更好的方法,先這樣用了。Windows下ping的結果有3種:
- 正常ping通,最後4行都不為空。
- 無法解析DNS,即unknow host。輸出行數為1,
len(data) == 1
。 - 能解析,但ping不通,即100%丟包,此時輸出中沒有delay資訊。
用來提取資料的正規表示式:
# 域名解析後的IP地址
# 輸入:115.239.210.27 的 Ping 統計資訊:
# 結果:['115.239.210.27']
re_ip = re.compile('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*')
# 資料包的收發統計
# 輸入:資料包: 已傳送 = 10,已接收 = 10,丟失 = 0 (0% 丟失)
# 結果:[('10', '10', '0', '0%')]
re_packets = re.compile('.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+).*\(([0-9]+%).*')
# 資料包delay資料
# 輸入:最短 = 5ms,最長 = 44ms,平均 = 9ms
# 結果:[('5', '44', '9')]
re_delay = re.compile('.*= ([0-9]+)ms.*= ([0-9]+)ms.*= ([0-9]+)ms')
更好的方法是使用基於web的工具,測試者只需要開啟對應網頁,就可以從測試者的機器上ping伺服器。在不安裝多餘外掛的前提下,就只有JS和ActionScript可以選擇了。JavaScript是不能直接傳送ICMP包的,只有採用變通的辦法測試。目前線上測網速的工作大都是使用Flash實現。
相關文章
- SourceTree for Mac(Git客戶端工具)MacGit客戶端
- cassandra圖形客戶端工具客戶端
- XShell 客戶端和工具MobaXterm工具客戶端
- Python socket的客戶端Python客戶端
- Mac Git客戶端工具TowerMacGit客戶端
- 幾款Git GUI客戶端工具GitGUI客戶端
- openGauss 客戶端工具DataStudio客戶端AST
- 小弟求救伺服器-客戶端程式伺服器客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- oracle 客戶端與伺服器端的關係Oracle客戶端伺服器
- js 客戶端與伺服器端的通訊JS客戶端伺服器
- 跨平臺ssh客戶端工具Termius客戶端
- FTP客戶端工具Yummy FTP Pro MacFTP客戶端Mac
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- Redis從客戶端登入伺服器Redis客戶端伺服器
- Oracle客戶端連線伺服器教程Oracle客戶端伺服器
- 【windows socket+TCP伺服器客戶端】WindowsTCP伺服器客戶端
- 【windows socket+UDP伺服器客戶端】WindowsUDP伺服器客戶端
- 【windows socket+HTTP伺服器客戶端】WindowsHTTP伺服器客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- Python MQTT客戶端 paho-mqttPythonMQQT客戶端
- 客戶端到伺服器端的通訊過程客戶端伺服器
- LOL 客戶端實時計分板工具客戶端
- SSH客戶端常用工具SecureCRT操作客戶端Securecrt
- 客戶端自動配置安裝(expect工具)客戶端
- MongoDB視覺化客戶端工具MonjaDBMongoDB視覺化客戶端
- Rest Post示例(java服務端、python客戶端)RESTJava服務端Python客戶端
- Redis原始碼剖析——客戶端和伺服器Redis原始碼客戶端伺服器
- 伺服器獲取真實客戶端 IP伺服器客戶端
- 使用 WebSocket 客戶端連線 MQTT 伺服器Web客戶端MQQT伺服器
- 客戶端怎麼連線到伺服器?客戶端伺服器
- redis伺服器/客戶端安裝與配置Redis伺服器客戶端
- 【轉載】MySQL客戶端伺服器協議MySql客戶端伺服器協議
- dubbo客戶端客戶端
- Pulsar客戶端客戶端
- mqtt 客戶端MQQT客戶端
- SAP UI渲染模式:客戶端渲染 VS 伺服器端渲染UI模式客戶端伺服器
- React 伺服器端渲染和客戶端渲染效果對比React伺服器客戶端