/IOMClient/src/com/iomc/ServerInfo.py
Python | 306 lines | 233 code | 27 blank | 46 comment | 69 complexity | 21e61f672181319e298c29a247b5550a MD5 | raw file
- #!/usr/bin/python
- #-*- coding:utf-8-*-
-
- """
- ??????????
- """
- import re,urllib2
- import socket
- import os,time
- import platform
- import psutil
- import sitecustomize
-
- def version(cmds,cmd):
- """ServerInfo_version : 1.5_2011_03_12_Release
- """
- return version.__doc__
-
- def getCPUUsage():
- """??cpu???????????????CPU??????????????"""
- return psutil.cpu_percent(interval=1.0)
-
- def getCPUCores():
- """?CPU????python2.6??????
- """
- import multiprocessing
- cores = multiprocessing.cpu_count()
- return cores
-
- def visit(url):
- opener = urllib2.urlopen(url)
- if url == opener.geturl():
- str = opener.read()
- return re.search('\d+\.\d+\.\d+\.\d+',str).group(0)
-
- def getWaiIP():
- """?????ip??????MAC??"""
- waiIP = "None"
- waiMAC = "None"
- sys = getSYSTEM()
- if sys == "Windows":
- import wmi
- c = wmi.WMI()
- interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)
- for interface in interfaces:
- pat = re.compile(r'\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}')
- ip=re.findall(pat,str(interface.IPAddress))
- if ip[0].startswith('172.18') or ip[0].startswith('172.20') or ip[0].startswith('192.168')or ip[0].startswith('10.') or ip[0].startswith('0.0.') or ip[0].startswith('127.0.'):
- pass
- else:
- waiIP = ip[0]
- waiMAC = str(interface.MACAddress)
-
- elif sys == "Linux":
- """linux??IP?MAC??????????????????????????????????IP
- ??IP??????????????????????????????IP????????????????
- """
- try:
- ipLine = "ifconfig | grep 'inet addr' | awk -F: '{print $2}' | awk '{print $1}' | grep -v 127.0.0.1 "
- ips = os.popen(ipLine).read()
- ip = ips.split('\n')
- macLine = "ifconfig | grep HWaddr | awk -F' ' '{print $5}'"
- macs = os.popen(macLine).read()
- mac = macs.split('\n')
- J=0
- for wip in ip:
- if wip:
- if wip.startswith('172.18') or wip.startswith('172.20') or wip.startswith('192.168')or wip.startswith('10.') or wip.startswith('0.0.') or wip.startswith('127.0.'):
- J=J+1
- else:
- waiIP = wip
- waiMAC = mac[J]
- break
- except:
- pass
- else:
- pass
- return waiIP,waiMAC
-
- def GetinnerIPMac():
- """????IP???????Mac??"""
- innerIP ="None"
- innerMAC ="None"
- sys = getSYSTEM()
- if sys == "Windows":
- import wmi
- c = wmi.WMI()
- interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)
- for interface in interfaces:
- pat = re.compile(r'\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}')
- ip=re.findall(pat,str(interface.IPAddress))
- if ip[0].startswith('172.18') or ip[0].startswith('172.20') or ip[0].startswith('192.168')or ip[0].startswith('10.'):
- innerIP = ip[0]
- innerMac = str(interface.MACAddress)
-
- elif sys == "Linux":
- try:
- ipLine = "ifconfig | grep 'inet addr' | awk -F: '{print $2}' | awk '{print $1}' | grep -v 127.0.0.1 "
- ips = os.popen(ipLine).read()
- ip = ips.split('\n')
- macLine = "ifconfig | grep HWaddr | awk -F' ' '{print $5}'"
- macs = os.popen(macLine).read()
- mac = macs.split('\n')
- J=0
- for iip in ip:
- if iip:
- if iip.startswith('172.18') or iip.startswith('172.20') or iip.startswith('192.168')or iip.startswith('10.') or iip.startswith('0.0.') or iip.startswith('127.0.'):
- innerIP = iip
- innerMAC = mac[J]
- break
- else:
- J=J+1
- except:
- pass
- else:
- pass
- return innerIP,innerMAC
- def getOS():
- """????????(windows,linux)"""
- return platform.platform()
-
- def getSYSTEM():
- """??????(windows,linux)????????????????Windows/Linux"""
- return platform.system()
-
- def hostname():
- """?????(windows,linux)"""
- try:
- hostname = socket.getfqdn(socket.gethostname())
- return str(hostname)
- except:
- return 'Unkown_hostname'
-
- def sysDir():
- """??????(windows/linux)???linux????????????"""
- lines="None"
- sys = getSYSTEM()
- if sys == "Windows":
- lines = os.getenv('WINDIR')+"\\system32"
- elif sys == "Linux":
- lines = os.getcwd()
- return str(lines)
-
- def cpuInfo():
- """cpu????(windows)/linux"""
- CPUINFO = "None"
- sys = getSYSTEM()
- if sys == "Windows":
- import wmi
- c = wmi.WMI ()
- for cpu in c.Win32_Processor():
- lines = cpu.Name
- CPUINFO = lines.strip()
- elif sys == "Linux":
- try:
- infos = "cat /proc/cpuinfo | grep 'model name' | awk -F: '{print $2}'"
- info = os.popen(infos).read()
- CPUINFO = info.strip()
- except:
- pass
- else:
- pass
- return CPUINFO
-
- def getPhyMem():
- """???????????????????????????K
- """
- phymem = int(psutil.TOTAL_PHYMEM)/1024
- availphymem = int(psutil.avail_phymem())/1024
- usedphymem = int(psutil.used_phymem())/1024
- return phymem,availphymem,usedphymem
-
- def codeset():
- """???????(windows)/linux"""
- codeset = "None"
- sys = getSYSTEM()
- if sys == "Windows":
- import wmi
- lines = os.popen('wmic os get codeset').readlines()
- codeset = lines[1][:len(lines[1])-1].strip()
- elif sys == "Linux":
- try:
- codecmd = "cat /etc/sysconfig/i18n | grep 'LANG=' | awk -F= '{print $2}'"
- code1 = os.popen(codecmd).read()
- codeset = code1.split('"')[1]
- except:
- pass
- else:
- pass
- return codeset
-
- def getDiskWarning():
- """windows?????????10%????5G?????
- Linux??????????85%???????
- """
- warning = "None"
- sys = getSYSTEM()
- if sys == "Windows":
- try:
- c = wmi.WMI ()
- for disk in c.Win32_LogicalDisk (DriveType=3):
- #?????????
- freePercent = 100.0 * long (disk.FreeSpace) / long (disk.Size)
- #?????????G
- freeSpace = float(disk.FreeSpace)/1024/1024/1024
- #??10%?????????????5G???
- if int(freePercent) <= int(10):
- if int(freeSpace) < int(5):
- warning= "%s free %0.2fG, %0.2f%%" % (disk.Caption,freeSpace,freePercent)
- else:
- warning='normal'
- else:
- warning='normal'
- except:
- warning='getDiskWarningError'
- elif sys == "Linux":
- try:
- #??85$????????
- diskcmd = "df | awk '/\<(08[5-9]|9[0-9]|100)% +/'"
- warning = os.popen(diskcmd).read()
- if warning:
- pass
- else:
- warning = 'normal'
- except:
- warning='getDiskWarningError'
- else:
- pass
- return warning
-
-
-
- def getProcessInfo(p):
- """???????????????ID???????, ????,CPU???
- ??psutil?????CPU???????CPU?????????????CPU?????????
- """
- try:
- cpu = int(p.get_cpu_percent(interval=0))
- rss, vms = p.get_memory_info()
- name = p.name
- pid = p.pid
- except psutil.error.NoSuchProcess, e:
- name = "Closed_Process"
- pid = 0
- rss = 0
- vms = 0
- cpu = 0
- return [name.upper(), pid, rss, vms, cpu]
-
- def getAllProcessInfo():
- """?????????????ID???????, ????,CPU???
- """
- instances = []
- all_processes = list(psutil.process_iter())
- for proc in all_processes:
- proc.get_cpu_percent(interval=0)
- #??sleep1???????CPU??????
- time.sleep(1)
- for proc in all_processes:
- instances.append(getProcessInfo(proc))
- return instances
-
- def getAllProcessName():
- """?????????
- """
- instances = []
- all_processes = list(psutil.process_iter())
- for proc in all_processes:
- instances.append(proc.name.upper())
- return instances
-
- def getAllProcessNameId():
- """??????????pid????getAllProcessName
- """
- instances = []
- all_processes = list(psutil.process_iter())
- for proc in all_processes:
- nameid = [proc.name.upper(),proc.pid]
- instances.append(nameid)
- return instances
-
- def Kill_Process_pid(pid):
- '''????PID???'''
- try:
- p = psutil.Process(pid)
- processkill = p.kill()
- except:
- pass
-
- def getDirSize(dir):
- '''??????'''
- size = 0L
- for root, dirs, files in os.walk(dir):
- size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
- return size
-
- def getInfos():
- ipMac = GetinnerIPMac()
- waiIP = getWaiIP()
- #cpuInfo()
- return ipMac[0]+";"+waiIP[0]+";"+ipMac[1]+";"+getOS()+";"+hostname()+";"+sysDir()+";"+cpuInfo()+";"+str(getPhyMem()[0])+";"+codeset()
-
- #if __name__ == '__main__':
- # print GetinnerIPMac()
- # print getWaiIP()
-