云计算百科
云计算领域专业知识百科平台

python编写liunx服务器登陆自动巡检脚本

前言:

用户需要一份用Python编写的Linux系统巡检脚本,检查内存、磁盘、CPU使用率,还有网络连通性。 首先,我得确定用户的使用场景。可能用户是系统管理员,需要定期监控服务器状态,确保系统正常运行。 或者是开发人员,想自动化巡检流程,减少手动检查的工作量。 接下来,用户提到的具体指标有内存、磁盘、CPU和网络。 我需要考虑如何用Python获取这些信息。 对于Linux系统,通常可以通过读取/proc文件系统或者使用命令行工具来获取这些数据。 比如,内存信息可以从/proc/meminfo读取,磁盘使用情况可以用psutil库或者调用df命令, CPU使用率可以用psutil或者读取/proc/stat,网络连通性可以用ping命令或者socket库。 然后,用户可能希望脚本的输出清晰易读,可能需要格式化输出,比如用表格形式展示结果。 颜色区分不同状态,比如红色表示警告,绿色表示正常,这样用户一眼就能看出问题所在。 还要考虑是否需要参数化,比如允许用户指定检查的磁盘路径或IP地址,但用户没有提到,可能基础版本不需要,但可以预留扩展的可能性。 另外,日志记录功能可能有用,方便后续查看历史巡检结果。 需要处理权限问题,比如某些命令可能需要sudo权限,但用户可能希望脚本在普通用户权限下运行,所以应选择不需要特权的方法。 例如,使用psutil库可以跨平台,并且不需要执行外部命令,更安全可靠。 关于网络检查,用户可能想检测内网关键服务或外网连通性。 比如,默认检查8.8.8.8和百度,但用户可能需要自定义,所以可以设计成可配置的列表。 最后,确保代码兼容Python3,并且添加必要的异常处理,避免脚本因为某个检查项失败而终止。 例如,捕获异常并记录错误信息,继续执行其他检查。

总结下来,脚本需要:

  • 使用psutil库获取系统信息(内存、磁盘、CPU)。
  • 使用subprocess执行ping命令检查网络。
  • 格式化输出,用颜色标记状态。
  • 可配置的检查项,如磁盘路径、IP列表。
  • 添加日志记录功能。
  • 异常处理,确保健壮性。 现在开始编写代码,确保各部分功能正确, 并测试在不同情况下的表现,比如磁盘空间不足时是否正确报警,网络不通时的处理等。 同时,提供使用说明,指导用户安装依赖(如psutil)和如何运行脚本。
  • 以下是一个基于Python 3的Linux系统巡检脚本,使用psutil库获取系统信息,包含您要求的五大核心指标检测:

    #!/usr/bin/env python3
    import psutil
    import subprocess
    import platform
    from datetime import datetime
    import socket
    import sys

    # 颜色配置
    COLORS = {

    \”red\”: \”\\033[91m\”,
    \”green\”: \”\\033[92m\”,
    \”yellow\”: \”\\033[93m\”,
    \”orange\”: \”\\033[38;5;208m\”,
    \”end\”: \”\\033[0m\”
    }

    def check_uptime():
    \”\”\”获取系统运行时间和启动时间\”\”\”
    boot_time = psutil.boot_time()
    now = datetime.now().timestamp()

    # 计算运行时间
    uptime_seconds = now boot_time
    days, remainder = divmod(uptime_seconds, 86400)
    hours, remainder = divmod(remainder, 3600)
    minutes, seconds = divmod(remainder, 60)

    return {

    \”days\”: int(days),
    \”hours\”: int(hours),
    \”minutes\”: int(minutes),
    \”seconds\”: int(seconds),
    \”boot_time\”: datetime.fromtimestamp(boot_time).strftime(\”%Y-%m-%d %H:%M:%S\”)
    }

    def get_host_ip():
    \”\”\”获取主机所有IPv4地址(排除回环地址)\”\”\”
    interfaces = psutil.net_if_addrs()
    ips = []

    for name, addrs in interfaces.items():
    for addr in addrs:
    if addr.family == socket.AF_INET and not addr.address.startswith(\’127.\’):
    ips.append({

    \”interface\”: name,
    \”ip\”: addr.address,
    \”netmask\”: addr.netmask
    })

    return {
    \”ips\”: ips}

    def check_memory():
    \”\”\”检查内存使用率(修改为GB单位)\”\”\”
    mem = psutil.virtual_memory()
    return {

    \”total\”: round(mem.total / (1024**3

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » python编写liunx服务器登陆自动巡检脚本
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!