设为首页 收藏本站
查看: 650|回复: 0

[经验分享] Python [6] IT资产管理(下)

[复制链接]

尚未签到

发表于 2018-8-3 12:54:26 | 显示全部楼层 |阅读模式
[root@localhost Simplecmdb]# vim post_hostinfo.py  

  
#!/usr/bin/env python
  
#coding:utf8
  
#author:Allentuns
  
#time:2015-02-14
  

  
from subprocess import Popen,PIPE
  
import urllib,urllib2
  
import pickle
  
import json
  
import re
  

  
###[hostname message]#####
  
def get_HostnameInfo(file):
  
    with open(file,'r') as fd:
  
        data = fd.read().split('\n')
  
        for line in data:
  
            if line.startswith('HOSTNAME'):
  
                hostname = line.split('=')[1]
  
                break
  
    return hostname
  

  
#####[ipaddr message]#####
  
def get_Ipaddr():
  
    P = Popen(['ifconfig'],stdout=PIPE)
  
    data = P.stdout.read()
  
    list = []
  
    str = ''
  
    option = False
  
    lines = data.split('\n')
  
    for line in lines:
  
        if not line.startswith(' '):
  
            list.append(str)
  
            str = line
  
        else:
  
            str += line
  
    while True:
  
        if '' in list:
  
            list.remove('')
  
        else:
  
            break
  
    r_devname = re.compile('(eth\d*|lo)')
  
    r_mac = re.compile('HWaddr\s([A-F0-9:]{17})')
  
    r_ip = re.compile('addr:([\d.]{7,15})')
  
    for line in list:
  
        devname = r_devname.findall(line)
  
        mac = r_mac.findall(line)
  
        ip = r_ip.findall(line)
  
        if mac:
  
            return  ip[0]
  

  
#####[osversion message]#####
  
def get_OsVerion(file):
  
    with open(file) as fd:
  
        lines = fd.readlines()
  
        os_version = lines[0][:-8]
  
        return os_version
  

  
#####[memory message]#####
  
def get_MemoryInfo(file):
  
   with open(file) as fd:
  
        data_list = fd.read().split('\n')
  
        MemTotal_line = data_list[0]
  
        Memory_K = MemTotal_line.split()[1]
  
        Memory_G = float(Memory_K)/1000/1000
  
        Memory_G2 = '%.2f' % Memory_G
  
        memory = Memory_G2 + 'G'
  
        return memory
  

  
#####[disk message]#####
  
def get_DiskInfo():
  
    p = Popen(['fdisk','-l'],stdout=PIPE,stderr=PIPE)
  
    stdout,stderr = p.communicate()
  
    diskdata = stdout
  

  
    disk_initial_size = 0
  
    re_disk_type = re.compile(r'Disk /dev/[shd]{1}.*:\s+[\d.\s\w]*,\s+([\d]+).*')
  
    disk_size_bytes = re_disk_type.findall(diskdata)
  
    for size in disk_size_bytes:
  
        disk_initial_size += int(size)
  
    disk_size_total_bytes = '%.2f'  % (float(disk_initial_size)/1000/1000/1000)
  
    disk_size_total_G = disk_size_total_bytes + 'G'
  
    disk = disk_size_total_G
  
    return disk
  

  
#####[cpu message]#####
  
def get_CpuInfo():
  
    p = Popen(['cat','/proc/cpuinfo'],stdout=PIPE,stderr=PIPE)
  
    stdout, stderr = p.communicate()
  
    cpudata = stdout.strip()
  

  
    cpu_dict = {}
  
    re_cpu_cores = re.compile(r'processor\s+:\s+([\d])')
  
    re_vendor_id = re.compile(r'vendor_id\s+:\s([\w]+)')
  
    re_model_name = re.compile(r'model name\s+:\s+(.*)')
  

  
    res_cpu_cores = re_cpu_cores.findall(cpudata)
  
    cpu_dict['Cpu_Cores'] = int(res_cpu_cores[-1]) + 1
  
    res_vendor_id = re_vendor_id.findall(cpudata)
  
    cpu_dict['Vendor_Id'] = res_vendor_id[-1]
  
    res_model_name = re_model_name.findall(cpudata)
  
    cpu_dict['Model_Name'] = res_model_name[-1]
  
    return cpu_dict
  

  
#####[Demi message]#####
  
def get_dmidecode():
  
    P = Popen(['dmidecode'],stdout=PIPE)
  
    data = P.stdout.read()
  
    lines = data.split('\n\n')
  
    dmidecode_line =  lines[2]
  
    line = [i.strip() for i in dmidecode_line.split('\n') if i]
  
    Manufacturer = line[2].split(': ')[-1]
  
    product = line[3].split(': ')[-1]
  
    sn = line[5].split(': ')[-1]
  
    return Manufacturer,product,sn
  

  
if __name__ == '__main__':
  
    #####[get data]#####
  
    hostname = get_HostnameInfo('/etc/sysconfig/network')
  
    ip = get_Ipaddr()
  
    osversion = get_OsVerion('/etc/issue')
  
    memory = get_MemoryInfo('/proc/meminfo')
  
    disk = get_DiskInfo()
  
    Vendor_Id = get_CpuInfo()['Vendor_Id']
  
    Model_Name = get_CpuInfo()['Model_Name']
  
    Cpu_Cores = get_CpuInfo()['Cpu_Cores']
  
    Manufacturer,product,sn = get_dmidecode()
  

  
    #####[get dict]#####
  
    hostinfo = {
  
        'hostname':hostname,
  
        'ip':ip,
  
        'osversion':osversion,
  
        'memory':memory,
  
        'disk':disk,
  
        'vendor_id':Vendor_Id,
  
        'model_name':Model_Name,
  
        'cpu_core':Cpu_Cores,
  
        'product':product,
  
        'Manufacturer':Manufacturer,
  
        'sn':sn,
  
        }
  
    print hostinfo
  
    #data = urllib.urlencode(hostinfo)    #注释掉原来
  
    data = pickle.dumps(hostinfo)    #添加一行
  

  
    req = urllib2.urlopen('http://192.168.1.210:80/hostinfo',data)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545952-1-1.html 上篇帖子: linux中python2.6升级2.7 下篇帖子: 关于python类的组合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表