使用Python编写Ping监测程序

Ping是一种常用的网络诊断工具,它可以测试两台计算机之间的连通性;

如果您需要监测某个IP地址的连通情况,可以使用Python编写一个Ping监测程序;

本文将介绍如何使用Python编写Ping监测程序

首先,需要导入os、sys、time和subprocess模块。其中os和sys模块用于处理文件路径,time模块用于获取当前时间,subprocess模块用于运行Ping命令

c 复制代码
import os
import sys
import time
import subprocess

接着,需要设置监测的IP地址和Log文件存储路径

c 复制代码
cur_path = os.path.join(os.path.expanduser('~'), 'Desktop')
hostname = '192.168.10.1'  # IP address

log_path = cur_path + "\\%s_ping_log.txt" % hostname

接着定义一个名为pyping的函数,用于运行Ping命令并返回Ping结果。该函数使用subprocess模块运行ping命令并捕获命令输出。然后,提取Ping结果中的有用信息,并将当前时间添加到结果中。最后,该函数返回一个Ping结果字符串

c 复制代码
def pyping(ipaddress):
    cur_time = time.strftime('%Y_%m_%d-%H:%M:%S', time.localtime(time.time()))
    proc = subprocess.Popen(
        ['ping', '-n', '1', ipaddress],
        stdout=subprocess.PIPE)
    stdout, stderr = proc.communicate()
    ping_ret = '%s, PC:%s' % (cur_time, stdout.decode("gbk").split("\n")[2])
    print(ping_ret)
    return ping_ret

接着使用一个无限循环来执行Ping监测,在每次循环中,调用pyping函数来运行Ping命令并获取结果,将结果写入Log文件,并使用time模块延迟一秒钟;

c 复制代码
with open(log_path, "a") as logfile:
    try:
        while True:
            ret_ping = pyping(hostname)
            logfile.write(ret_ping + '\r\n')
            logfile.flush()
            time.sleep(1)
    except KeyboardInterrupt:
        print("程序已停止")

最后,将以上三部分代码段组合在一起即可编写一个Ping监测程序;

c 复制代码
# 导入必要的模块
```c
import os  # 操作系统模块
import sys  # 系统模块
import time  # 时间模块
import subprocess  # 子进程模块

# 获取当前用户桌面路径
cur_path = os.path.join(os.path.expanduser('~'), 'Desktop')
# IP地址
hostname = '192.168.10.1'
# 日志文件路径
log_path = cur_path + "\\%s_ping_log.txt" % hostname

# 定义函数,输入IP地址,返回ping测试结果
def pyping(ipaddress):
    # 获取当前时间
    cur_time = time.strftime('%Y_%m_%d-%H:%M:%S', time.localtime(time.time()))
    # 执行ping指令并获取结果
    proc = subprocess.Popen(
        ['ping', '-n', '1', ipaddress],
        stdout=subprocess.PIPE)
    stdout, stderr = proc.communicate()
    # 解析结果并返回字符串
    ping_ret = '%s, PC:%s' % (cur_time, stdout.decode("gbk").split("\n")[2])
    print(ping_ret)
    return ping_ret

# 打开日志文件并开始循环ping测试
with open(log_path, "a") as logfile:
    try:
        while True:
            # 进行ping测试
            ret_ping = pyping(hostname)
            # 将结果写入日志文件
            logfile.write(ret_ping + '\r\n')
            logfile.flush()
            # 等待1秒
            time.sleep(1)
    except KeyboardInterrupt:
        print("程序已停止")
相关推荐
vipxieliang6 分钟前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
小小张说故事13 分钟前
Python 的 a[1:5:2] 到底切出了什么?拆开 slice 对象、__getitem__ 与负步长那次反向
python
wuyk55529 分钟前
PyQt6-第15讲-数据可视化QChart
python·ui·信息可视化·pyqt
天天被压力1 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
日日大王学编程1 小时前
2026主流AI Agent产品分类、核心差异与技术特性全解析
人工智能·后端·python
天天被压力1 小时前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
东鹏特饮13 小时前
系统运维(传统/通用运维)面试题
开发语言·php
Android系统攻城狮14 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
多客:duokelijie16 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
武天旭16 小时前
AI安全--AI大模型的毒性偏见与安全对齐实践
人工智能·python·深度学习