获取centos6.5系统信息脚本
2016-12-24 17:07
316 查看
最近想尝试做两件比较重要的事情,第一是用python写个cmdb,第二还是用python写个小型监控系统,下面是获取系统信息的脚本:
#!/usr/bin/env python # coding:utf-8 import json import subprocess import psutil import socket import time import re import platform import requests device_white = ['eth0','eth1', 'eth2', 'eth3', 'em1'] headers = {"Content-Type": "application/json"} def get_hostname(): return socket.gethostname() def get_device_info(): ret = [] for device, info in psutil.net_if_addrs().iteritems(): if device in device_white: device_info = {'device': device} for snic in info: if snic.family == 2: device_info['ip'] = snic.address elif snic.family == 17: device_info['mac'] = snic.address ret.append(device_info) return ret def get_cpuinfo(): ret = {"cpu": '', 'num': 0} with open('/proc/cpuinfo') as f: for line in f: line_list = line.strip().split(':') key = line_list[0].rstrip() if key == "model name": ret['cpu'] = line_list[1].lstrip() if key == "processor": ret['num'] += 1 return ret def get_disk(): cmd = """/sbin/fdisk -l|grep Disk|egrep -v 'identifier|mapper|Disklabel'""" disk_data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) partition_size = [] for dev in disk_data.stdout.readlines(): try: size = int(dev.strip().split(', ')[1].split()[0]) / 1024 / 1024 / 1024 partition_size.append(str(size)) except: pass return " + ".join(partition_size) def get_Manufacturer(): cmd = """/usr/sbin/dmidecode | grep -A6 'System Information'""" ret = {} manufacturer_data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in manufacturer_data.stdout.readlines(): if "Manufacturer" in line: ret['manufacturers'] = line.split(': ')[1].strip() elif "Product Name" in line: ret['server_type'] = line.split(': ')[1].strip() elif "Serial Number" in line: ret['st'] = line.split(': ')[1].strip().replace(' ','') elif "UUID" in line: ret['uuid'] = line.split(': ')[1].strip() return ret #return manufacturer_data.stdout.readline().split(': ')[1].strip() # 出厂日期 def get_rel_date(): cmd = """/usr/sbin/dmidecode | grep -i release""" data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) date = data.stdout.readline().split(': ')[1].strip() return re.sub(r'(\d+)/(\d+)/(\d+)',r'\3-\1-\2',date) def get_os_version(): return " ".join(platform.linux_distribution()) def get_innerIp(ipinfo): inner_device = ["eth0", "bond0"] ret = {} for info in ipinfo: if info.has_key('ip') and info.get('device', None) in inner_device: ret['ip'] = info['ip'] ret['mac_address'] = info['mac'] return ret return {} def get_Memtotal(): with open('/proc/meminfo') as mem_open: a = int(mem_open.readline().split()[1]) return a / 1024 def run(): data = {} res = {} data['hostname'] = get_hostname() data.update(get_innerIp(get_device_info())) cpuinfo = get_cpuinfo() data['server_cpu'] = "{cpu} {num}".format(**cpuinfo) data['server_disk'] = get_disk() data.update( get_Manufacturer()) data['manufacture_date'] = get_rel_date() data['os'] = get_os_version() data['server_mem'] = get_Memtotal() if "VMware" in data['manufacturers']: data['vm_status'] = 0 else: data['vm_status'] = 1 res['params']=data res['jsonrpc'] = "2.0" res["id"] = 1 res["method"]= "server.radd" # print res # for k,v in data.iteritems(): # print k, v send(res) def send(data): url = "http://192.168.63.182:2000/api" r = requests.post(url, headers=headers,json=data) print r.status_code print r.content if __name__ == "__main__": run()
相关文章推荐
- 获取系统信息脚本。
- 分享一个查看CentOS系统信息的脚本
- CentOS-6.5系统基础优化附带优化脚本
- Openwrt系统中shell脚本获取配置文件信息解读
- 利用Python脚本获取Windows和Linux的系统版本信息 推荐
- 获取linux系统信息的一个python脚本
- centos6.5 系统内核版本获取
- CentOS-6.5系统基础优化附带优化脚本
- CentOS-6.5系统基础优化篇,附带优化脚本
- 获取服务器信息shell脚本:内存大小,cpu型号,系统发行版本,硬盘个数及大小等
- 获取系统信息#Shell脚本
- linux系统使用python获取内存使用信息脚本分享
- 获取服务器信息的Shell脚本分享(ubuntu、centos测试通过)
- Centos6.5系统信息查看
- ASP脚本获取客户端系统信息
- 获取服务器信息shell脚本:内存大小,cpu型号,系统发行版本,硬盘个数及大小等
- linux系统使用python获取cpu信息脚本分享
- CENTOS 6.8 bash脚本获取CPU内存磁盘信息
- CentOS 6.5 最小化安装系统初始化脚本