使用Python编写Ping监测步调

嚴華  金牌会员 | 2024-6-15 00:29:40 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 687|帖子 687|积分 2061

Ping是一种常用的网络诊断工具,它可以测试两台盘算机之间的连通性;
如果您必要监测某个IP地址的连通环境,可以使用Python编写一个Ping监测步调;
本文将先容如何使用Python编写Ping监测步调
首先,必要导入os、sys、time和subprocess模块。此中os和sys模块用于处理文件路径,time模块用于获取当前时间,subprocess模块用于运行Ping下令
  1. import os
  2. import sys
  3. import time
  4. import subprocess
复制代码
接着,必要设置监测的IP地址和Log文件存储路径
  1. cur_path = os.path.join(os.path.expanduser('~'), 'Desktop')
  2. hostname = '192.168.10.1'  # IP address
  3. log_path = cur_path + "\\%s_ping_log.txt" % hostname
复制代码
接着定义一个名为pyping的函数,用于运行Ping下令并返回Ping效果。该函数使用subprocess模块运行ping下令并捕获下令输出。然后,提取Ping效果中的有用信息,并将当前时间添加到效果中。最后,该函数返回一个Ping效果字符串
  1. def pyping(ipaddress):
  2.     cur_time = time.strftime('%Y_%m_%d-%H:%M:%S', time.localtime(time.time()))
  3.     proc = subprocess.Popen(
  4.         ['ping', '-n', '1', ipaddress],
  5.         stdout=subprocess.PIPE)
  6.     stdout, stderr = proc.communicate()
  7.     ping_ret = '%s, PC:%s' % (cur_time, stdout.decode("gbk").split("\n")[2])
  8.     print(ping_ret)
  9.     return ping_ret
复制代码
接着使用一个无限循环来执行Ping监测,在每次循环中,调用pyping函数来运行Ping下令并获取效果,将效果写入Log文件,并使用time模块耽误一秒钟;
  1. with open(log_path, "a") as logfile:
  2.     try:
  3.         while True:
  4.             ret_ping = pyping(hostname)
  5.             logfile.write(ret_ping + '\r\n')
  6.             logfile.flush()
  7.             time.sleep(1)
  8.     except KeyboardInterrupt:
  9.         print("程序已停止")
复制代码
最后,将以上三部门代码段组合在一起即可编写一个Ping监测步调;
  1. # 导入必要的模块
  2. ```c
  3. import os  # 操作系统模块
  4. import sys  # 系统模块
  5. import time  # 时间模块
  6. import subprocess  # 子进程模块
  7. # 获取当前用户桌面路径
  8. cur_path = os.path.join(os.path.expanduser('~'), 'Desktop')
  9. # IP地址
  10. hostname = '192.168.10.1'
  11. # 日志文件路径
  12. log_path = cur_path + "\\%s_ping_log.txt" % hostname
  13. # 定义函数,输入IP地址,返回ping测试结果
  14. def pyping(ipaddress):
  15.     # 获取当前时间
  16.     cur_time = time.strftime('%Y_%m_%d-%H:%M:%S', time.localtime(time.time()))
  17.     # 执行ping指令并获取结果
  18.     proc = subprocess.Popen(
  19.         ['ping', '-n', '1', ipaddress],
  20.         stdout=subprocess.PIPE)
  21.     stdout, stderr = proc.communicate()
  22.     # 解析结果并返回字符串
  23.     ping_ret = '%s, PC:%s' % (cur_time, stdout.decode("gbk").split("\n")[2])
  24.     print(ping_ret)
  25.     return ping_ret
  26. # 打开日志文件并开始循环ping测试
  27. with open(log_path, "a") as logfile:
  28.     try:
  29.         while True:
  30.             # 进行ping测试
  31.             ret_ping = pyping(hostname)
  32.             # 将结果写入日志文件
  33.             logfile.write(ret_ping + '\r\n')
  34.             logfile.flush()
  35.             # 等待1秒
  36.             time.sleep(1)
  37.     except KeyboardInterrupt:
  38.         print("程序已停止")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表