python 获取服务器基本信息

简介: python 获取服务器CPU、内存等基本信息; /proc/meminfo , psutil

方法1:通过系统文件或者系统命令来获取;

import os
import commands
import string
import socket
import json
def base_info():
    """
    :return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION(6/7), MACHINE(64/32)
    """
    ifname='eth0'
    osinfo = os.uname()
    HOSTNAME = osinfo[1]
    VERSION  = osinfo[2].split('.')[-2]
    MACHINE  = osinfo[-1]
    mem_cmd = "awk '/MemTotal/{printf(\"%0.2f\",$2/1000/1000)}' /proc/meminfo"
    MEM = int(round(float(commands.getoutput(mem_cmd))))

    cpu_cmd = "awk '/processor/{cpu+=1}END{print cpu}' /proc/cpuinfo"
    CPU = commands.getoutput(cpu_cmd)
    if VERSION == 'el7':
        avai_mem_cmd = "awk '/MemAvailable/ {printf(\"%0.2f\",$2/1000/1000)}' /proc/meminfo"
        AVAI_MEM =  commands.getoutput(avai_mem_cmd)
        cpuidle_cmd = "top -bcn 1 | head |awk '/Cpu/ {print $8}'"
        CPUIDLE = commands.getoutput(cpuidle_cmd)
    if VERSION == 'el6':
        ##centos6 可用内存计算方法:MemFree+Buffers+Cached
        avai_mem_cmd = "sed -n '2,4p' /proc/meminfo |awk '{sum+=$2}END{printf(\"%.2f\",sum/1000/1000)}'"
        AVAI_MEM =  commands.getoutput(avai_mem_cmd)
        cpuidle_cmd = "top -bcn 1 | sed -n 's/ //g;3p' | awk -F\"%|,\" '{print $7}'"
        CPUIDLE = commands.getoutput(cpuidle_cmd)
    unix_socker = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    IPADDR = socket.inet_ntoa(fcntl.ioctl(
        unix_socker.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
    )[20:24])

    return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION, MACHINE

方法2:通过 psutil 模块来获取


import os
import commands
import string
import socket
import json
import psutil
def base_info():
    """
    :return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION(6/7), MACHINE(64/32)
    """
    ifname='eth0'
    osinfo = psutil.os.uname()
    HOSTNAME = osinfo[1]
    VERSION = osinfo[2].split('.')[-2]
    MACHINE = osinfo[-1]
    CPUIDLE = 100-psutil.cpu_percent(interval=1)
    CPU = psutil.cpu_count()
    mem_info = psutil.virtual_memory()
    MEM = mem_info.total/1024/1024/1000
    AVAI_MEM = mem_info.available/1024/1024/1000
    net_info = psutil.net_if_addrs()
    IPADDR = net_info['eth0'][0].address
 
    return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION, MACHINE



目录
相关文章
|
5天前
|
Python
Python量化炒股的数据信息获取—获取沪深股市每日成交概况信息
Python量化炒股的数据信息获取—获取沪深股市每日成交概况信息
18 5
|
6天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
45 5
|
5天前
|
Python
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
17 3
|
17天前
|
Kubernetes API 开发工具
【Azure Developer】通过SDK(for python)获取Azure服务生命周期信息
需要通过Python SDK获取Azure服务的一些通知信息,如:K8S版本需要更新到指定的版本,Azure服务的维护通知,服务处于不健康状态时的通知,及相关的操作建议等内容。
39 18
|
14天前
|
人工智能 运维 安全
专访浪潮信息:AI 原生时代,浪潮信息引领服务器操作系统创新 全面贡献龙蜥社区
分享了关于 AI 原生化趋势下服务器操作系统进化的思考,以及浪潮信息在龙蜥社区开源贡献的思路、成果与未来技术发展规划。
专访浪潮信息:AI 原生时代,浪潮信息引领服务器操作系统创新 全面贡献龙蜥社区
|
23天前
|
存储 算法 安全
Python案例分享:如何实现信息的加解密
Python案例分享:如何实现信息的加解密
26 10
|
21天前
|
Python
惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
【9月更文挑战第13天】在编程的世界中,进程间通信(IPC)如同一场精彩的社交舞会,每个进程通过优雅的IPC机制交换信息,协同工作。本文将带你探索Python中的IPC奥秘,了解它是如何让程序实现无缝信息交流的。IPC如同隐形桥梁,连接各进程,使其跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存及套接字,适用于不同场景。通过一个简单的队列示例,我们将展示如何使用`multiprocessing.Queue`实现进程间通信,使程序如同社交达人般高效互动。掌握IPC,让你的程序在编程舞台上大放异彩。
14 3
|
23天前
|
安全 Python
使用Python实现简单的Web服务器
使用Python实现简单的Web服务器
22 6
|
4天前
|
Python
Python量化炒股的数据信息获取— 获取上市公司股东和股本信息
Python量化炒股的数据信息获取— 获取上市公司股东和股本信息
12 0
|
5天前
|
网络协议 网络安全 Python
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息
17 0
下一篇
无影云桌面