| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | 
							- #!/usr/bin/python
 
- #
 
- # Version 0.1
 
- #
 
- # This Localcheck is still a work in progress - do not use it for production !!
 
- # (c) Michael Honkoop <mhonkoop@comsolve.nl>
 
- # License: GNU General Public License v2
 
- import sys
 
- import ldap
 
- import json
 
- import re
 
- def print_list(the_list):
 
-     for each_item in the_list:
 
-         if isinstance(each_item, list):
 
-             print_list(each_item)
 
-         else:
 
-             jsonArray = json.loads(json.dumps(each_item))
 
-             # start creating resultArray elements
 
-             resultArray = ['0 \"eDirectory ']
 
-             detailArray = []
 
-             # add result efrom sublist key, but strip leading and trasiling spaces
 
-             resultArray.append(' '.join(jsonArray[0].split(',')[::-1]).replace('cn=Monitor', '').replace('cn=', '').strip() + "\" ")
 
-             for k,v in jsonArray[1].items():
 
-                 # objectclass is not intersting for monitoring, so omitting it
 
-                 if k == "objectclass":
 
-                     continue
 
-                 else:
 
-                     # put the resulting keys in an array, and reverse the order
 
-                     keyresult = jsonArray[0].split(',')[::-1]
 
-                     # strip whitespaces and other unwanted information
 
-                     keytxtresult = (' '.join(keyresult).replace('cn=Monitor', '').replace('cn=', '').strip())
 
-                     # join the values into a string
 
-                     valueresult = ' '.join(str(e) for e in v)
 
-                     # sanitize the timestamps if they are present
 
-                     valueresult = re.sub('(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})([Z])', r'\3-\2-\1 \4:\5:\6', valueresult)
 
-                     # usecases of formatting data differently
 
-                     if "BackGroundProc" in keytxtresult or "Agent Status" in keytxtresult:
 
-                         resultArray.append("- ")
 
-                         resultArray.append(k + ":" + valueresult)
 
-                         resultArray.append(' ')
 
-                     else:
 
-                         # append items to resultArray, but skip non-interesting items
 
-                         if "CheckPointThreadForceStartTime" in k or "CheckPointThreadStartTime" in k:
 
-                             continue
 
-                         else:
 
-                             resultArray.append(k + "=" + valueresult)
 
-                             resultArray.append('|')
 
-                             detailArray.append(k + ":" + valueresult)
 
-             #remove last item from array
 
-             resultArray.pop()
 
-             # print the resulting array as a string removing unwanted text
 
-             resultStr = ''.join(str(e) for e in resultArray).replace(" Bytes", "").replace(" KB", "") + " " + ' '.join(str(e) for e in detailArray)
 
-             if "BackGroundProc" in resultStr:
 
-                 continue
 
-             else:
 
-                 print(resultStr)
 
- l = ldap.initialize('ldaps://localhost:636')
 
- binddn = "my_bind_user"
 
- pw = "my_bind_user_password"
 
- basedn = "cn=Monitor"
 
- searchFilter = "(objectClass=*)"
 
- searchAttribute = ["*"]
 
- #this will scope the entire subtree under Monitor
 
- searchScope = ldap.SCOPE_SUBTREE
 
- #Bind to the server
 
- try:
 
-     l.protocol_version = ldap.VERSION3
 
-     l.simple_bind_s(binddn, pw)
 
- except ldap.INVALID_CREDENTIALS:
 
-   print "Your username or password is incorrect."
 
-   sys.exit(0)
 
- except ldap.LDAPError, e:
 
-   if type(e.message) == dict and e.message.has_key('desc'):
 
-       print e.message['desc']
 
-   else:
 
-       print e
 
-   sys.exit(0)
 
- try:
 
-     ldap_result_id = l.search(basedn, searchScope, searchFilter, searchAttribute)
 
-     result_set = []
 
-     while True:
 
-         result_type, result_data = l.result(ldap_result_id, 0)
 
-         if (result_data == []):
 
-             break
 
-         else:
 
-             if result_type == ldap.RES_SEARCH_ENTRY:
 
-                 result_set.append(result_data)
 
- #    print(type(result_set))
 
-     for i in range(len(result_set)):
 
-         print_list(result_set[i])
 
- except ldap.LDAPError, e:
 
-     print e
 
- l.unbind_s()
 
 
  |