写一个 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('\n\n')
for lines in data:
if lines.startswith('lo'):
continue
if lines:
ip = lines.split('\n')[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('\n')[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

Python 收集主机信息的更多相关文章

  1. python编程实例-收集主机信息

    收集主机信息: 主机名 ip 操作系统版本osver 服务器厂商vendor 服务器型号:product 服务器序列号:sn CPU型号:cpu_model CPU核数:cpu_num 内存大小:Me ...

  2. python学习:收集主机信息

    #!/usr/bin/env python   from subprocess import Popen, PIPE   def getIfconfig():     p = Popen(['ifco ...

  3. python-Django收集主机信息

    1.创建工程simplecmdb django-admin.py startproject simplecmdb 2.创建应用 cd simplecmdb python manage.py start ...

  4. python-Django收集主机信息json格式

    Control: from django.conf.urls import patterns, include, url from django.contrib import admin admin. ...

  5. python学习:使用正则收集ip信息

        使用正则表达式收集主机信息        #!/usr/bin/env python   from subprocess import Popen, PIPE import re def ge ...

  6. 使用 python 收集获取 Linux 系统主机信息

    使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: u ...

  7. 使用Python收集获取Linux系统主机信息

    爬虫代理IP由芝麻HTTP服务供应商提供 使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/en ...

  8. 主机信息收集工具DMitry

    主机信息收集工具DMitry   DMitry是Kali Linux内置的一款信息收集工具.它的目标主要是Web类主机.它不仅通过主动查询.端口扫描方式,还借助第三方网站和搜索引擎获取信息. 它搜集的 ...

  9. python 调用zabbix api实现查询主机信息,输出所有主机ip

    之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...

随机推荐

  1. win下安装redis

    redis官方不提供win安装程序,github上有个开源项目提供. https://github.com/MSOpenTech/redis 微软开源团队维护 ## 目录 - 安装 - 启动 - 使用 ...

  2. QT安装在VS2008中的方法

    (一)工欲善其事,必先利其器,废话不多讲. 原文:http://www.cnblogs.com/zwq194/archive/2011/02/19/1958713.html 总结起来网上流行的VS20 ...

  3. android开发中用到的px、dp、sp

    先介绍一下这几个单位: px : pixels(像素),相应屏幕上的实际像素点. dip :device independent pixels,与密度无关的像素,基于屏幕密度的抽象单位. 在每英寸16 ...

  4. uWSGI的stats注释,送给需要的人,欢迎指正

    吐槽先,对于uWSGI状态信息没有文档说明这样一个现实,我只想说一句:F*CK YOU!!! 花了2天时间,累得眼珠子疼,针对这鬼畜的stats,借助Total Commander和VS大概撸了一边u ...

  5. JavaScript 深入理解作用域链

    第一步. 定义后:每个已定义函数,都有一个内在属性[scope],其对应一个对象的列表,列表中的对象仅能内部访问. 例如:建立一个全局函数A,那么A的[Scope]内部属性中只包含一个全局对象(Glo ...

  6. 【好文收藏】javascript中event对象详解

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  7. C语言 常用的宏定义

    __FILE__ :宏在预编译时会替换成当前的源文件名 __LINE__:宏在预编译时会替换成当前的行号 __FUNCTION__:宏在预编译时会替换成当前的函数名称 //宏__VA_ARGS__的用 ...

  8. 关于Cocos2d-x随机数的生成

    1.使用前必须下一个随机种子,可以让每一次生成的随机数是不一样的,这里的每一次指的是时间上的每一次,如果是同一时间的随机数就不能这样写了 srand((unsigned)time(NULL));--- ...

  9. selenium测试(Java)(三)

    控制浏览器: http://www.cnblogs.com/moonpool/p/5657752.html

  10. 面向移动端的轻量级神经网络模型mobilenet、ShuffleNet

    翻译: http://baijiahao.baidu.com/s?id=1565832713111936&wfr=spider&for=pc http://baijiahao.baid ...