zoukankan      html  css  js  c++  java
  • Python 收集主机信息

    写一个 python 脚本,收集以下信息 ( CentOS 6 ) :

        IP地址 <ip>
        主机名 <hostname>
        操作系统版本 <osver>
        服务器厂商 <vendor>
        服务器型号 <product>
        主板序列号 <sn>
        CPU型号 <cpu_model>
        CPU核数 <cpu_num>
        内存大小 <memory>

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from subprocess import Popen, PIPE
    
    # 获取IP地址
    def getIP():
        p = Popen('ifconfig', stdout=PIPE, shell=True)
        data = p.stdout.read().split('
    
    ')
        for lines in data:
            if lines.startswith('lo'):
                continue
            if lines:
                ip = lines.split('
    ')[1].split()[1].split(':')[1]
                break
    
        return ip
    
    
    # 获取主机名
    def getHostname():
        p = Popen('hostname', stdout=PIPE, shell=True)
        hostname = p.stdout.read().strip()
        return hostname
    
    
    # 获取操作系统版本
    def getOSVersion():
        with open('/etc/issue') as fd:
            data = fd.read().split('
    ')[0]
            osVer = data.split()[0] + ' ' + data.split()[2]
    
        return osVer
    
    
    # 获取服务器硬件信息
    def getHardwareInfo(name):
        cmd = ''' dmidecode --type system | grep "%s" ''' % name
        p = Popen(cmd, stdout=PIPE, shell=True)
        hardwareInfo = p.stdout.read().split(':')[1].strip()
        return hardwareInfo
    
    
    # 获取CPU型号
    def getCPUModel():
        with open('/proc/cpuinfo') as fd:
            for line in fd.readlines():
                if line.startswith('model name'):
                    cpuModel = line.split()[3].split('(')[0]
                    break
    
        return cpuModel
    
    
    # 获取CPU核数
    def getCPUNum():
        with open('/proc/cpuinfo') as fd:
            for line in fd.readlines():
                if line.startswith('cpu cores'):
                    cpuNum = line.split()[3]
                    break
    
        return cpuNum
    
    
    # 获取物理内存大小
    def getMemorySize():
        with open('/proc/meminfo') as fd:
            memTotal = fd.readline().split()[1]
    
        memSize = str(int(memTotal)/1024) + 'M'
        return memSize
    
    
    if __name__ == '__main__':
        hostInfo = {}
        hostInfo['ip'] = getIP()
        hostInfo['hostname'] = getHostname()
        hostInfo['osVer'] = getOSVersion()
        hostInfo['vendor'] = getHardwareInfo('Manufacturer')
        hostInfo['product'] = getHardwareInfo('Product Name') 
        hostInfo['sn'] = getHardwareInfo('Serial Number')
        hostInfo['cpu_model'] = getCPUModel()
        hostInfo['cpu_num'] = getCPUNum()
        hostInfo['memory'] = getMemorySize()
    
        for key in hostInfo.keys():
            print("%s: %s" % (key, hostInfo[key]))
    [root@localhost ~]$ python getHostInfo.py 
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    cpu_num: 2
    ip: 192.168.119.128
    hostname: localhost
    cpu_model: Intel
    osVer: CentOS 6.5
    sn: VMware-56 4d a1 32 29 62 d8 dc-dd f9 99 6e 16 8f 65 a3
    memory: 1861M

          

  • 相关阅读:
    Mac OS X:在VirtualBox中使用Xcode连接IPAD
    Xcode:PhoneGap 2.5.0项目创建方法
    Android:网络操作2.3等低版本正常,4.0(ICS)以上出错,换用AsyncTask异步线程get json
    安卓:WebView中iframe,焦点字段出现两个文本输入框,位置错误
    Mac OS X:Mac系统鼠标滚轮方向调整
    Xcode:missing file xxx
    Mac OS X:Xcode常用快捷键
    分形图形神器XaoS
    [转]How to change Atheros AR9285 MAC addr on Win7(Win7下更改Atheros AR9285 MAC地址)
    利用pscp建立“右键发送到”菜单
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10316161.html
Copyright © 2011-2022 走看看