python的ping網(wǎng)絡(luò)狀態(tài)監(jiān)測的實(shí)現(xiàn)(含多IP)
ping 基本概念
ping (Packet Internet Groper)是一種因特網(wǎng)包探索器,用于測試網(wǎng)絡(luò)連接量的程序。Ping是工作在 TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)中應(yīng)用層的一個(gè)服務(wù)命令, 主要是向特定的目的主機(jī)發(fā)送 ICMP(Internet Control Message Protocol 因特網(wǎng)報(bào)文控制協(xié)議)Echo 請求報(bào)文,測試目的站是否可達(dá)及了解其有關(guān)狀態(tài) 。
基于tcping python模塊的網(wǎng)絡(luò)狀態(tài)監(jiān)測
from tcping import Ping def pingip(ipAddress,request_nums): """ ping ip :param ipAddress: :param request_nums: 請求次數(shù) :return: 丟包率loss和統(tǒng)計(jì)結(jié)果res """ ping = Ping(ipAddress,80,3) ping.ping(request_nums) res = ping.result.table ret = ping.result.raw retlist = list(ret.split('\n')) loss = retlist[2].split(',')[3].split(' ')[1] # 獲取丟包率 return loss, res def main(): # 獲取待ping的服務(wù)器地址信息 ipAddress = "x.x.x.x" # 調(diào)用pingip方法得到丟包率 loss, res = pingip(ipAddress, 3) if float(loss.strip('%')) / 100 <= 0.1: # 0.1為自定義丟包率閾值,可修改 print("ping 不通") else: print("ping 通") if __name__ == '__main__': #實(shí)現(xiàn)服務(wù)器網(wǎng)絡(luò)狀態(tài)監(jiān)控 main() pass
tcping是一個(gè)類似于 ping 的系統(tǒng)工具, 檢測在連接 tcp 時(shí)候的延遲, 比較正確是反應(yīng)出網(wǎng)絡(luò)的延遲情況,畢竟 tcp 用途比較廣。
雖然和 icmp 的 ping 原理不同,ping 命令也能很大程度上反映出網(wǎng)絡(luò)的延遲。
tcping 模塊安裝方法
pip install tcping
Ping多個(gè)ip+定時(shí)
定時(shí)器可參觀這篇博客:http://www.dbjr.com.cn/article/277143.htm
用TCPing寫一個(gè)demo程序,定時(shí)(例如5分鐘)檢測5臺機(jī)器是否在線(網(wǎng)絡(luò)是否通)?
# -*- coding:utf-8 -*- import time import datetime from apscheduler.schedulers.blocking import BlockingScheduler from tcping import Ping def pingip(ipAddress, request_nums): """ ping ip :param ipAddress: :param request_nums: 請求次數(shù) :return: 丟包率loss和統(tǒng)計(jì)結(jié)果res """ ping = Ping(ipAddress, 80, 3) ping.ping(request_nums) res = ping.result.table ret = ping.result.raw retlist = list(ret.split('\n')) loss = retlist[2].split(',')[3].split(' ')[1] # 獲取丟包率 return loss, res def main(): # 獲取待ping的服務(wù)器地址信息 line_ping = ['14.215.177.39', '14.215.177.39', '14.215.177.39', '14.215.177.39', '14.215.177.39'] for ipAddress in line_ping: # 調(diào)用pingip方法得到丟包率 loss, res = pingip(ipAddress, 3) if float(loss.strip('%')) / 100 <= 0.1: # 0.1為自定義丟包率閾值,可修改 print("ping 不通") else: print("ping 通") # 定時(shí) def my_job(text="默認(rèn)值"): print(text, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) main() sched = BlockingScheduler() sched.add_job(my_job, 'interval', minutes=5, args=['5分鐘定時(shí)']) if __name__ == '__main__': # 實(shí)現(xiàn)服務(wù)器網(wǎng)絡(luò)狀態(tài)監(jiān)控 sched.start() pass
運(yùn)行結(jié)果
其中IP和時(shí)間修改以下地方就行
到此這篇關(guān)于python的ping網(wǎng)絡(luò)狀態(tài)監(jiān)測的實(shí)現(xiàn)(含多IP)的文章就介紹到這了,更多相關(guān)python ping網(wǎng)絡(luò)狀態(tài)監(jiān)測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏
相關(guān)文章
利用python-pypcap抓取帶VLAN標(biāo)簽的數(shù)據(jù)包方法
今天小編就為大家分享一篇利用python-pypcap抓取帶VLAN標(biāo)簽的數(shù)據(jù)包方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程
Twisted的異步工作模式使其在非阻塞情況下可以擁有較高的性能,這里我們來看一下使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程,包括服務(wù)器端與客戶端的實(shí)踐.2016-05-05Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python使用Scrapy爬蟲框架全站爬取圖片并保存本地的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03解決Python串口接收無標(biāo)識不定長數(shù)據(jù)
這篇文章主要介紹了解決Python串口接收無標(biāo)識不定長數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09解決Vscode中jupyter出現(xiàn)kernel dead問題
遇到VSCode中Jupyter Kernel Dead時(shí),可通過Anaconda Prompt安裝ipykernel解決,首先使用jupyter kernelspec list命令查看內(nèi)核,若發(fā)現(xiàn)缺少ipykernel,激活相應(yīng)虛擬環(huán)境,使用conda install ipykernel命令安裝,操作后,VSCode中Jupyter應(yīng)能正常運(yùn)行2024-09-09Python urllib request模塊發(fā)送請求實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python urllib request模塊發(fā)送請求實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12python GUI庫圖形界面開發(fā)之PyQt5選項(xiàng)卡控件QTabWidget詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5選項(xiàng)卡控件QTabWidget詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法,涉及Python字符串遍歷、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05