Advertisement
pjmakey2

listar_procesos

Sep 4th, 2012
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. **Retraer informacion de los procesos con psutil**
  2. <code class='python'>
  3. #doc http://code.google.com/p/psutil/wiki/Documentation
  4. import psutil
  5. import pwd
  6. import re
  7. import datetime
  8. import subprocess
  9. datos = re.compile('/var/datos')
  10. despreciate = ['0', '99']
  11. import ldap
  12. # listado de llaves del diccionario de procesos
  13. # ['status',
  14. #  'pid',
  15. #  'connections',
  16. #  'cmdline',
  17. #  'create_time',
  18. #  'ionice',
  19. #  'num_fds',
  20. #  'memory_maps',
  21. #  'cpu_percent',
  22. #  'terminal',
  23. #  'ppid',
  24. #  'cwd',
  25. #  'nice',
  26. #  'username',
  27. #  'cpu_times',
  28. #  'io_counters',
  29. #  'memory_info',
  30. #  'threads',
  31. #  'open_files',
  32. #  'name',
  33. #  'num_threads',
  34. #  'exe',
  35. #  'uids',
  36. #  'gids',
  37. #  'cpu_affinity',
  38. #  'memory_percent']
  39.  
  40. def removeduplicates(lista):
  41.     outlist = []
  42.     for ele in lista:
  43.         if ele not in outlist:
  44.             outlist.append(ele)
  45.     return outlist
  46.  
  47. con = ldap.initialize("ldap://xxx.xxx.xxx.xxx")
  48. con.simple_bind_s("cn=XXXXXXXXXXX", "XXXXXXXx")
  49.  
  50. todos = []
  51. #iteramos todos los procesos del servidor
  52. for a in psutil.process_iter():
  53.     try:
  54.     #mediante la funciones traeramos todas las informaciones relevantes a nuestro procesos en forma de diccionario
  55.     #con el parametro attrs, filtramos los contenidos que queremos
  56.         todos.append(a.as_dict(attrs=['pid', 'get_open_files', 'get_connections','uids', 'create_time']))
  57.     #luego es cuestion de ir agarrando y validando los elementos de nuestro diccionario
  58.  
  59.     except:
  60.         pass
  61. nicer = []
  62. for a in todos:
  63.     # print a.keys()
  64.     try:
  65.         if str(a.get('uids')[-1]) in despreciate:
  66.             continue
  67.         else:
  68.             usu = con.search_s('ou=usuarios,dc=lorenzo,dc=lamas', ldap.SCOPE_ONELEVEL,'(uidNumber=%s)' % str(a.get('uids')[-1]), ['uid'])
  69.             if usu:
  70.                 if usu[0][-1].get('uid'):
  71.                     usu = usu[0][-1].get('uid')[-1]
  72.                 else:
  73.                     usu = 'no definido'
  74.  
  75.                 if a.get('open_files') and a.get('connections'):
  76.                     # if  len(a.get('connections')) == 1:
  77.                     for op in a.get('open_files'):
  78.                         if datos.search(op[0]):
  79.                             snipf = '%s,%s,%s,%s,%s,%s' % (usu,
  80.                                                            a.get('pid'),
  81.                                                            ".".join(a.get('connections')[-1].remote_address[0].replace('::ffff:', '').split(".")[-2:]),
  82.                                                            datetime.datetime.fromtimestamp(a.get('create_time')).strftime("%Y-%m-%d"),
  83.                                                            op[0].split('/')[-1].split('.')[-1],
  84.                                                            op[0].split('/')[-1]
  85.                                                            )
  86.                             nicer.append(snipf)
  87.                         else:
  88.                             pass
  89.             # print a.uids[-1], datetime.datetime.fromtimestamp(a.create_time).strftime("%Y-%m-%d %H:%M"),op[0].split('/')[-1]
  90.     except Exception, e:
  91.         print e
  92. nicert = removeduplicates(nicer)
  93. for a in nicert:
  94.     print a
  95. </code>
  96.  
  97. El siguiente codigo realiza la siguiente salida
  98. <code class='bash'>
  99. prometeo,15096,1.43,2012-08-23,mdb,Transporte2.mdb
  100. raps,15096,1.43,2012-08-23,ldb,Transporte2.ldb
  101. lorenzo,15096,1.43,2012-08-23,ldb,Db3.ldb
  102. lamas,15096,1.43,2012-08-23,xls,PLAN DE VIAJES -2012.xls
  103. gaytore,11096,1.78,2012-08-23,msf,Trash.msf
  104. </code>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement