python的ping网络状态监测的实现(含多IP)
作者:兮教授~。 发布时间:2022-03-16 07:21:29
标签:python,ping
ping 基本概念
ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态 。
基于tcping python模块的网络状态监测
from tcping import Ping
def pingip(ipAddress,request_nums):
"""
ping ip
:param ipAddress:
:param request_nums: 请求次数
:return: 丢包率loss和统计结果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的服务器地址信息
ipAddress = "x.x.x.x"
# 调用pingip方法得到丢包率
loss, res = pingip(ipAddress, 3)
if float(loss.strip('%')) / 100 <= 0.1: # 0.1为自定义丢包率阈值,可修改
print("ping 不通")
else:
print("ping 通")
if __name__ == '__main__':
#实现服务器网络状态监控
main()
pass
tcping是一个类似于 ping 的系统工具, 检测在连接 tcp 时候的延迟, 比较正确是反应出网络的延迟情况,毕竟 tcp 用途比较广。
虽然和 icmp 的 ping 原理不同,ping 命令也能很大程度上反映出网络的延迟。
tcping 模块安装方法
pip install tcping
Ping多个ip+定时
定时器可参观这篇博客:https://www.jb51.net/article/277143.htm
用TCPing写一个demo程序,定时(例如5分钟)检测5台机器是否在线(网络是否通)?
# -*- 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: 请求次数
:return: 丢包率loss和统计结果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的服务器地址信息
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:
# 调用pingip方法得到丢包率
loss, res = pingip(ipAddress, 3)
if float(loss.strip('%')) / 100 <= 0.1: # 0.1为自定义丢包率阈值,可修改
print("ping 不通")
else:
print("ping 通")
# 定时
def my_job(text="默认值"):
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分钟定时'])
if __name__ == '__main__':
# 实现服务器网络状态监控
sched.start()
pass
运行结果
其中IP和时间修改以下地方就行
来源:https://blog.csdn.net/weixin_46288319/article/details/129322624


猜你喜欢
- 本文实例为大家分享了React实现表格选取的具体代码,供大家参考,具体内容如下在工作中,遇到一个需求,在表格中实现类似于Excel选中一片区
- <html><head><meta http-equiv="Content-Type" c
- RabbitMQ可以当做一个消息代理,它的核心原理非常简单:即接收和发送消息,可以把它想象成一个邮局:我们把信件放入邮箱,邮递员就会把信件投
- 使用HTMLTestRunner输出的测试报告中,标题和错误说明的中文乱码。环境:python v3.6HTMLTestRunner v0.
- 平常我都是直接执行 pip install 安装的第三方库,很多教程也是这么介绍的,一直以来我都认为这是标准的、正确的安装 Python 第
- 闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇
- 代码如下:ALTER function [dbo].[GetOrderNum]( @ebaystockflag varchar(20)//规
- 本文实例讲述了MySQL数据库优化之分表分库操作。分享给大家供大家参考,具体如下:分表分库垂直拆分垂直拆分就是要把表按模块划分到不同数据库表
- 本文实例总结了Python3.5字符串常用操作。分享给大家供大家参考,具体如下:一、输入与输出#输入与输出str = input("
- 如下所示:jsonObject 是个jsonif (key in jsonObject) : print '有'else:
- 本文实例讲述了Python动态导入模块的方法。分享给大家供大家参考,具体如下:一、正常导入模块正常模块导入方式: import module
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- 1.散点图代码# This import registers the 3D projection, but is otherwise unu
- 1. 字面理解:torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起。2. 例子
- 一、前言这篇文章主要是记录一下php生成静态页面的大致步骤,关于页面静态化,大家想必都听说过,但是真正用的时候反而不是很多。有些页面考虑到访
- Internet的规模每一百天就会增长一倍,客户希望获得7天×24小时的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点“Serve
- 其实图像识别技术与我们平时做的密码验证之类的没有什么区别,都是事先把要校验的数据入库,然后使用时将录入(识别)的数据与库中的数据做对比,只不
- 一、按索引取数据①tf.gather()输入参数:数据、维度、索引例:设数据是[4,35,8],4个班级,每个班级35个学生,每个学生8门课
- 一、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。1.得到当前工作目录,即当前Python脚本工作的目录路
- perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图