Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- **Retraer informacion de los procesos con psutil**
- <code class='python'>
- #doc http://code.google.com/p/psutil/wiki/Documentation
- import psutil
- import pwd
- import re
- import datetime
- import subprocess
- datos = re.compile('/var/datos')
- despreciate = ['0', '99']
- import ldap
- # listado de llaves del diccionario de procesos
- # ['status',
- # 'pid',
- # 'connections',
- # 'cmdline',
- # 'create_time',
- # 'ionice',
- # 'num_fds',
- # 'memory_maps',
- # 'cpu_percent',
- # 'terminal',
- # 'ppid',
- # 'cwd',
- # 'nice',
- # 'username',
- # 'cpu_times',
- # 'io_counters',
- # 'memory_info',
- # 'threads',
- # 'open_files',
- # 'name',
- # 'num_threads',
- # 'exe',
- # 'uids',
- # 'gids',
- # 'cpu_affinity',
- # 'memory_percent']
- def removeduplicates(lista):
- outlist = []
- for ele in lista:
- if ele not in outlist:
- outlist.append(ele)
- return outlist
- con = ldap.initialize("ldap://xxx.xxx.xxx.xxx")
- con.simple_bind_s("cn=XXXXXXXXXXX", "XXXXXXXx")
- todos = []
- #iteramos todos los procesos del servidor
- for a in psutil.process_iter():
- try:
- #mediante la funciones traeramos todas las informaciones relevantes a nuestro procesos en forma de diccionario
- #con el parametro attrs, filtramos los contenidos que queremos
- todos.append(a.as_dict(attrs=['pid', 'get_open_files', 'get_connections','uids', 'create_time']))
- #luego es cuestion de ir agarrando y validando los elementos de nuestro diccionario
- except:
- pass
- nicer = []
- for a in todos:
- # print a.keys()
- try:
- if str(a.get('uids')[-1]) in despreciate:
- continue
- else:
- usu = con.search_s('ou=usuarios,dc=lorenzo,dc=lamas', ldap.SCOPE_ONELEVEL,'(uidNumber=%s)' % str(a.get('uids')[-1]), ['uid'])
- if usu:
- if usu[0][-1].get('uid'):
- usu = usu[0][-1].get('uid')[-1]
- else:
- usu = 'no definido'
- if a.get('open_files') and a.get('connections'):
- # if len(a.get('connections')) == 1:
- for op in a.get('open_files'):
- if datos.search(op[0]):
- snipf = '%s,%s,%s,%s,%s,%s' % (usu,
- a.get('pid'),
- ".".join(a.get('connections')[-1].remote_address[0].replace('::ffff:', '').split(".")[-2:]),
- datetime.datetime.fromtimestamp(a.get('create_time')).strftime("%Y-%m-%d"),
- op[0].split('/')[-1].split('.')[-1],
- op[0].split('/')[-1]
- )
- nicer.append(snipf)
- else:
- pass
- # print a.uids[-1], datetime.datetime.fromtimestamp(a.create_time).strftime("%Y-%m-%d %H:%M"),op[0].split('/')[-1]
- except Exception, e:
- print e
- nicert = removeduplicates(nicer)
- for a in nicert:
- print a
- </code>
- El siguiente codigo realiza la siguiente salida
- <code class='bash'>
- prometeo,15096,1.43,2012-08-23,mdb,Transporte2.mdb
- raps,15096,1.43,2012-08-23,ldb,Transporte2.ldb
- lorenzo,15096,1.43,2012-08-23,ldb,Db3.ldb
- lamas,15096,1.43,2012-08-23,xls,PLAN DE VIAJES -2012.xls
- gaytore,11096,1.78,2012-08-23,msf,Trash.msf
- </code>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement