客戶端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實現。
相關文章
- openGauss 客戶端工具DataStudio客戶端AST
- XShell 客戶端和工具MobaXterm工具客戶端
- Python socket的客戶端Python客戶端
- SourceTree for Mac(Git客戶端工具)MacGit客戶端
- Mac Git客戶端工具TowerMacGit客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- Python MQTT客戶端 paho-mqttPythonMQQT客戶端
- FTP客戶端工具Yummy FTP Pro MacFTP客戶端Mac
- 小型Linux客戶端工具PUTTY,SSHclient,SLinux客戶端
- 跨平臺ssh客戶端工具Termius客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- Easyvision中的伺服器與客戶端伺服器客戶端
- python socketserver處理客戶端的流程PythonServer客戶端
- SSH客戶端常用工具SecureCRT操作客戶端Securecrt
- LOL 客戶端實時計分板工具客戶端
- Grids for mac 強大的Instagram客戶端工具Mac客戶端
- 客戶端自動配置安裝(expect工具)客戶端
- 伺服器獲取真實客戶端 IP伺服器客戶端
- 使用 WebSocket 客戶端連線 MQTT 伺服器Web客戶端MQQT伺服器
- Redis原始碼剖析——客戶端和伺服器Redis原始碼客戶端伺服器
- SseEmitter 伺服器向客戶端推送訊息MIT伺服器客戶端
- 客戶端怎麼連線到伺服器?客戶端伺服器
- Aiohttp是Python的最快的非同步HTTP客戶端/伺服器庫包AIHTTPPython非同步客戶端伺服器
- React 伺服器端渲染和客戶端渲染效果對比React伺服器客戶端
- Redis 6.0 客戶端快取的伺服器端實現Redis客戶端快取伺服器
- SAP UI渲染模式:客戶端渲染 VS 伺服器端渲染UI模式客戶端伺服器
- dubbo客戶端客戶端
- Pulsar客戶端客戶端
- mqtt 客戶端MQQT客戶端
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- IT 團隊文件工具 showdoc 推出 Windows 版客戶端Windows客戶端
- NineData:強大的ClickHouse圖形客戶端工具客戶端
- SQLPro Studio Mac資料庫管理客戶端工具SQLMac資料庫客戶端
- socket.io 客戶端與伺服器應用客戶端伺服器
- Java UDP伺服器和客戶端原始碼 -javarevisitedJavaUDP伺服器客戶端原始碼
- YUM源伺服器搭建與客戶端配置使用伺服器客戶端