PageRenderTime 86ms CodeModel.GetById 30ms RepoModel.GetById 7ms app.codeStats 0ms

/IOMClient/src/com/iomc/ServerInfo.py

http://ioms.googlecode.com/
Python | 306 lines | 233 code | 27 blank | 46 comment | 69 complexity | 21e61f672181319e298c29a247b5550a MD5 | raw file
  1. #!/usr/bin/python
  2. #-*- coding:utf-8-*-
  3. """
  4. ??????????
  5. """
  6. import re,urllib2
  7. import socket
  8. import os,time
  9. import platform
  10. import psutil
  11. import sitecustomize
  12. def version(cmds,cmd):
  13. """ServerInfo_version : 1.5_2011_03_12_Release
  14. """
  15. return version.__doc__
  16. def getCPUUsage():
  17. """??cpu???????????????CPU??????????????"""
  18. return psutil.cpu_percent(interval=1.0)
  19. def getCPUCores():
  20. """?CPU????python2.6??????
  21. """
  22. import multiprocessing
  23. cores = multiprocessing.cpu_count()
  24. return cores
  25. def visit(url):
  26. opener = urllib2.urlopen(url)
  27. if url == opener.geturl():
  28. str = opener.read()
  29. return re.search('\d+\.\d+\.\d+\.\d+',str).group(0)
  30. def getWaiIP():
  31. """?????ip??????MAC??"""
  32. waiIP = "None"
  33. waiMAC = "None"
  34. sys = getSYSTEM()
  35. if sys == "Windows":
  36. import wmi
  37. c = wmi.WMI()
  38. interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)
  39. for interface in interfaces:
  40. pat = re.compile(r'\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}')
  41. ip=re.findall(pat,str(interface.IPAddress))
  42. 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.'):
  43. pass
  44. else:
  45. waiIP = ip[0]
  46. waiMAC = str(interface.MACAddress)
  47. elif sys == "Linux":
  48. """linux??IP?MAC??????????????????????????????????IP
  49. ??IP??????????????????????????????IP????????????????
  50. """
  51. try:
  52. ipLine = "ifconfig | grep 'inet addr' | awk -F: '{print $2}' | awk '{print $1}' | grep -v 127.0.0.1 "
  53. ips = os.popen(ipLine).read()
  54. ip = ips.split('\n')
  55. macLine = "ifconfig | grep HWaddr | awk -F' ' '{print $5}'"
  56. macs = os.popen(macLine).read()
  57. mac = macs.split('\n')
  58. J=0
  59. for wip in ip:
  60. if wip:
  61. 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.'):
  62. J=J+1
  63. else:
  64. waiIP = wip
  65. waiMAC = mac[J]
  66. break
  67. except:
  68. pass
  69. else:
  70. pass
  71. return waiIP,waiMAC
  72. def GetinnerIPMac():
  73. """????IP???????Mac??"""
  74. innerIP ="None"
  75. innerMAC ="None"
  76. sys = getSYSTEM()
  77. if sys == "Windows":
  78. import wmi
  79. c = wmi.WMI()
  80. interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)
  81. for interface in interfaces:
  82. pat = re.compile(r'\d{0,3}\.\d{0,3}\.\d{0,3}\.\d{0,3}')
  83. ip=re.findall(pat,str(interface.IPAddress))
  84. if ip[0].startswith('172.18') or ip[0].startswith('172.20') or ip[0].startswith('192.168')or ip[0].startswith('10.'):
  85. innerIP = ip[0]
  86. innerMac = str(interface.MACAddress)
  87. elif sys == "Linux":
  88. try:
  89. ipLine = "ifconfig | grep 'inet addr' | awk -F: '{print $2}' | awk '{print $1}' | grep -v 127.0.0.1 "
  90. ips = os.popen(ipLine).read()
  91. ip = ips.split('\n')
  92. macLine = "ifconfig | grep HWaddr | awk -F' ' '{print $5}'"
  93. macs = os.popen(macLine).read()
  94. mac = macs.split('\n')
  95. J=0
  96. for iip in ip:
  97. if iip:
  98. 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.'):
  99. innerIP = iip
  100. innerMAC = mac[J]
  101. break
  102. else:
  103. J=J+1
  104. except:
  105. pass
  106. else:
  107. pass
  108. return innerIP,innerMAC
  109. def getOS():
  110. """????????(windows,linux)"""
  111. return platform.platform()
  112. def getSYSTEM():
  113. """??????(windows,linux)????????????????Windows/Linux"""
  114. return platform.system()
  115. def hostname():
  116. """?????(windows,linux)"""
  117. try:
  118. hostname = socket.getfqdn(socket.gethostname())
  119. return str(hostname)
  120. except:
  121. return 'Unkown_hostname'
  122. def sysDir():
  123. """??????(windows/linux)???linux????????????"""
  124. lines="None"
  125. sys = getSYSTEM()
  126. if sys == "Windows":
  127. lines = os.getenv('WINDIR')+"\\system32"
  128. elif sys == "Linux":
  129. lines = os.getcwd()
  130. return str(lines)
  131. def cpuInfo():
  132. """cpu????(windows)/linux"""
  133. CPUINFO = "None"
  134. sys = getSYSTEM()
  135. if sys == "Windows":
  136. import wmi
  137. c = wmi.WMI ()
  138. for cpu in c.Win32_Processor():
  139. lines = cpu.Name
  140. CPUINFO = lines.strip()
  141. elif sys == "Linux":
  142. try:
  143. infos = "cat /proc/cpuinfo | grep 'model name' | awk -F: '{print $2}'"
  144. info = os.popen(infos).read()
  145. CPUINFO = info.strip()
  146. except:
  147. pass
  148. else:
  149. pass
  150. return CPUINFO
  151. def getPhyMem():
  152. """???????????????????????????K
  153. """
  154. phymem = int(psutil.TOTAL_PHYMEM)/1024
  155. availphymem = int(psutil.avail_phymem())/1024
  156. usedphymem = int(psutil.used_phymem())/1024
  157. return phymem,availphymem,usedphymem
  158. def codeset():
  159. """???????(windows)/linux"""
  160. codeset = "None"
  161. sys = getSYSTEM()
  162. if sys == "Windows":
  163. import wmi
  164. lines = os.popen('wmic os get codeset').readlines()
  165. codeset = lines[1][:len(lines[1])-1].strip()
  166. elif sys == "Linux":
  167. try:
  168. codecmd = "cat /etc/sysconfig/i18n | grep 'LANG=' | awk -F= '{print $2}'"
  169. code1 = os.popen(codecmd).read()
  170. codeset = code1.split('"')[1]
  171. except:
  172. pass
  173. else:
  174. pass
  175. return codeset
  176. def getDiskWarning():
  177. """windows?????????10%????5G?????
  178. Linux??????????85%???????
  179. """
  180. warning = "None"
  181. sys = getSYSTEM()
  182. if sys == "Windows":
  183. try:
  184. c = wmi.WMI ()
  185. for disk in c.Win32_LogicalDisk (DriveType=3):
  186. #?????????
  187. freePercent = 100.0 * long (disk.FreeSpace) / long (disk.Size)
  188. #?????????G
  189. freeSpace = float(disk.FreeSpace)/1024/1024/1024
  190. #??10%?????????????5G???
  191. if int(freePercent) <= int(10):
  192. if int(freeSpace) < int(5):
  193. warning= "%s free %0.2fG, %0.2f%%" % (disk.Caption,freeSpace,freePercent)
  194. else:
  195. warning='normal'
  196. else:
  197. warning='normal'
  198. except:
  199. warning='getDiskWarningError'
  200. elif sys == "Linux":
  201. try:
  202. #??85$????????
  203. diskcmd = "df | awk '/\<(08[5-9]|9[0-9]|100)% +/'"
  204. warning = os.popen(diskcmd).read()
  205. if warning:
  206. pass
  207. else:
  208. warning = 'normal'
  209. except:
  210. warning='getDiskWarningError'
  211. else:
  212. pass
  213. return warning
  214. def getProcessInfo(p):
  215. """???????????????ID???????, ????,CPU???
  216. ??psutil?????CPU???????CPU?????????????CPU?????????
  217. """
  218. try:
  219. cpu = int(p.get_cpu_percent(interval=0))
  220. rss, vms = p.get_memory_info()
  221. name = p.name
  222. pid = p.pid
  223. except psutil.error.NoSuchProcess, e:
  224. name = "Closed_Process"
  225. pid = 0
  226. rss = 0
  227. vms = 0
  228. cpu = 0
  229. return [name.upper(), pid, rss, vms, cpu]
  230. def getAllProcessInfo():
  231. """?????????????ID???????, ????,CPU???
  232. """
  233. instances = []
  234. all_processes = list(psutil.process_iter())
  235. for proc in all_processes:
  236. proc.get_cpu_percent(interval=0)
  237. #??sleep1???????CPU??????
  238. time.sleep(1)
  239. for proc in all_processes:
  240. instances.append(getProcessInfo(proc))
  241. return instances
  242. def getAllProcessName():
  243. """?????????
  244. """
  245. instances = []
  246. all_processes = list(psutil.process_iter())
  247. for proc in all_processes:
  248. instances.append(proc.name.upper())
  249. return instances
  250. def getAllProcessNameId():
  251. """??????????pid????getAllProcessName
  252. """
  253. instances = []
  254. all_processes = list(psutil.process_iter())
  255. for proc in all_processes:
  256. nameid = [proc.name.upper(),proc.pid]
  257. instances.append(nameid)
  258. return instances
  259. def Kill_Process_pid(pid):
  260. '''????PID???'''
  261. try:
  262. p = psutil.Process(pid)
  263. processkill = p.kill()
  264. except:
  265. pass
  266. def getDirSize(dir):
  267. '''??????'''
  268. size = 0L
  269. for root, dirs, files in os.walk(dir):
  270. size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
  271. return size
  272. def getInfos():
  273. ipMac = GetinnerIPMac()
  274. waiIP = getWaiIP()
  275. #cpuInfo()
  276. return ipMac[0]+";"+waiIP[0]+";"+ipMac[1]+";"+getOS()+";"+hostname()+";"+sysDir()+";"+cpuInfo()+";"+str(getPhyMem()[0])+";"+codeset()
  277. #if __name__ == '__main__':
  278. # print GetinnerIPMac()
  279. # print getWaiIP()