gpt4 book ai didi

python - 创建一个 python 脚本,将 ping 结果打印到旋转日志中

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:17 26 4
gpt4 key购买 nike

我正在尝试在 python 中创建一个脚本,该脚本连续 ping 特定主机并将结果打印到每日轮换日志文件中。应保留最近 30 天的日志,所有较旧的内容都应删除。我完全没有使用 python 的经验。

最佳答案

您可以使用标准的Python日志模块:

下面是使用日志记录包中的“TimedRotatingFileHandler”的代码示例。基本上,我们创建一个日志处理程序,它将记录一个文件 30 天,然后用新文件替换它。每次我们使用 log 方法时,日志都会自动进入该文件。对于 ping 部分,我们使用 subprocess 包并在后台运行 ping 命令来捕获其输出。

import logging
import time
import subprocess

from logging.handlers import TimedRotatingFileHandler


def ping_host(path, hostname, ping_delay=20):
""""""
logger = logging.getLogger("Rotating Log")
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(path,
when="d",
interval=30,
backupCount=1)
logger.addHandler(handler)
while True:
response = subprocess.Popen(["/bin/ping", "-c1", "-w100",
hostname], stdout=subprocess.PIPE).stdout.read()
logger.info("Ping at {0}, result: {1}".format(time.time(),
response))
time.sleep(ping_delay)


if __name__ == "__main__":
hostname = "google.com"
log_file = "timed_test.log"
ping_host(log_file, hostname)

当您定义构造函数“TimedRotatingFileHandler”时,您可以传递如下参数:

  • (路径)带有名称的日志文件路径

  • (何时)间隔类型,这里我们有“d”,表示“天”,其他可能的值为“m”,“s”,“h”

  • (interval)实际间隔为整数,我们定义了30天

  • (backupCount) 有多少个日志副本,如果指定多于 1 个,将保留更多日志文件

如果您想实时测试它,请将“d”替换为“s”(第二个)

脚本需要保持运行才能完成工作。

您可以在 linux shell 的后台运行它:

nohup python3 your_file.py &

关于python - 创建一个 python 脚本,将 ping 结果打印到旋转日志中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com