收集主机信息:

主机名

ip

操作系统版本osver

服务器厂商vendor

服务器型号:product

服务器序列号:sn

CPU型号:cpu_model

CPU核数:cpu_num

内存大小:Memory

 #!/usr/bin/env python

 from subprocess import Popen,PIPE

 def getIfconfig():
p = Popen(['ifconfig'],stdout=PIPE)
data = p.stdout.read()
return data def getDmi():
p = Popen(['dmidecode'],stdout=PIPE)
data = p.stdout.read()
return data def parseData(data):
parsed_data = []
new_line = ''
data = [i for i in data.split('\n') if i]
for line in data:
if line[0].strip():
parsed_data.append(new_line)
new_line = line +'\n'
else:
new_line += line+'\n'
parsed_data.append(new_line)
return [i for i in parsed_data if i] def parseIfconfig(parsed_data):
parsed_data = [i for i in parsed_data if not i.startswith('lo')]
for lines in parsed_data:
line_list = lines.split('\n')
devname = line_list[0].split()[0]
macaddr = line_list[0].split()[-1]
ipaddr = line_list[1].split()[1].split(':')[1]
break
dic['ip'] =ipaddr
return dic def parseDmi(parsed_data):
dic = {}
parsed_data = [i for i in parsed_data if i.startswith('System Information')]
parsed_data = [i for i in parsed_data[0].split('\n')[1:] if i]
dmi_dic = dict([i.strip().split(':') for i in parsed_data])
dic['vendor'] = dmi_dic['Manufacturer']
return dmi_dic def getHostname(f):
with open(f) as fd:
for line in fd:
if line.startswith('HOSTNAME'):
hostname = line.split('=')[1].strip()
break
return {'hostname':hostname} def getOsver(f):
with open(f) as fd:
for line in fd:
osver = line.split()
break
return {'osver':osver} def getCpu(f):
num = 0
with open(f) as fd:
for line in fd:
if line.startswith('processor'):
num +=1
if line.startswith('model name'):
cpu_model = line.split(':')[1].split()
cpu_model = cpu_model[0]+' '+cpu_model[-1]
return {'cpu_num':num,'cpu_model':cpu_model} def getMemory(f):
with open(f) as fd:
for line in fd:
if line.startswith('MemTotal'):
mem = int(line.split()[1].strip())
break
mem = "%d" % int(mem/1024.0)+'M'
return {'Memory':mem} if __name__ == '__main__':
dic = {}
data_ip = getIfconfig()
parsed_data_ip = parseData(data_ip)
ip = parseIfconfig(parsed_data_ip)
data_dmi = getDmi()
parsed_data_dmi = parseData(data_dmi)
dmi = parseDmi(parsed_data_dmi)
hostname = getHostname('/etc/sysconfig/network')
osver = getOsver('/etc/issue')
cpu = getCpu('/proc/cpuinfo')
mem = getMemory('/proc/meminfo')
dic.update(ip)
dic.update(dmi)
dic.update(hostname)
dic.update(osver)
dic.update(cpu)
dic.update(mem)
print dic

python编程实例-收集主机信息的更多相关文章

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

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

  2. Python 收集主机信息

    写一个 python 脚本,收集以下信息 ( CentOS 6 ) : IP地址 <ip>    主机名 <hostname>    操作系统版本 <osver>  ...

  3. python编程实例-使用正则收集IP信息

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

  4. python网络编程之网络主机信息

    功能: 获取设备名称 方法: gethostname() 参数: 返回值:hostname(string) 功能: 获取设备ipv4地址 方法: gethostbyname() 参数: hostnam ...

  5. python学习:收集ip信息

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

  6. 自动化之路 python psutil模块 收集硬件信息

    一.psutil模块 1. psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控,分析和限制系统资源及进程的管理.它实现了 ...

  7. python编程实例-dmidecode系统信息搜集

    #!/usr/bin/env python from subprocess import PIPE,Popen def getDmi(): p = Popen(['dmidecode'],stdout ...

  8. python编程实例-统计apache进程占用的物理内存

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

  9. python-Django收集主机信息

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

随机推荐

  1. 【算法题 14 LeetCode 147 链表的插入排序】

    算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...

  2. Python之简单函数练习(Day30)

    1.写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作 def modify_file(filename,old,new): import os with open(filen ...

  3. Hexo 使用中搭建博客过程中遇到的坑

    本地执行hexo s 时报错: WARN No layout: index.html 原因:theme 没有下载下来,经查,theme文件夹下为空. 新建文章后,执行 hexo g 时报如下错误: ( ...

  4. storage

    localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用. sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时 ...

  5. 09_Hadoop启动或停止的三种方式及启动脚本

    1.Hadoop启动或停止 1)第一种方式 分别启动 HDFS 和 MapReduce,命令如下: 启动: $ start-dfs.sh $ start-mapred.sh 停止: $ stop-ma ...

  6. JAVA ArraySet<E> SET形式的有序LIST

    Set形式的数组,数组内容重复 package com.sicdt.library.core.utils; import java.util.ArrayList; import java.util.C ...

  7. Docker容器技术-第一个容器

    一.第一个容器 1.Docker版本 A.community-edition社区版 Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员 ...

  8. [POI2007]驾驶考试egz

    题目 BZOJ 神仙题,可比那些氵紫题有意思多了 做法 \(i\)能作为起始点,当\(i\)能到达\(1\)~\(i-1\)和\(i+1\)~\(n\) 这样处理显然会麻烦,因为要从每个点都特判一次 ...

  9. HA 脑裂原理

    HA 脑裂原理 “裂脑”,乃一个形象的术语,系HA系统危机情景. 引子:“裂脑”是治疗“癫痫”病的一种手术.医生们认为癫痫病发作是由于大脑“异常放电”所至.为了阻止“异常放电”波及整个大脑(左.右半脑 ...

  10. 前端常用js脚本

    常用js整理 //获取Url中的参数值 function getQueryString(name) { var reg = new RegExp("(^|&)" + nam ...