Merge branch 'ent-4808-plugin-update-md5' into 'develop'

New util - update remote config files MD5

See merge request artica/pandorafms!2810
This commit is contained in:
Daniel Rodriguez 2020-02-05 12:16:34 +01:00
commit 9617d08df7
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
#!/usr/bin/python
# Kevin Rojas 2018
import os
import glob
import hashlib
import argparse
def main():
global args
global confdir
global md5dir
global agents
# Argument parser
parser = argparse.ArgumentParser()
parser.add_argument('-r', '--run', required=False, dest='run', action='store_true',
help='run the tool to recreate md5 files')
parser.add_argument('-d', dest='dir', default='/var/spool/pandora/data_in',
help='data_in folder path (default /var/spool/pandora/data_in)')
parser.add_argument('-v', dest='verb', action='store_true',
help='verbose mode: Shows the files being updated')
# Definitions
args = vars(parser.parse_args())
datadir = args['dir']
confdir = datadir + '/conf/'
md5dir = datadir + '/md5/'
agents = glob.glob(confdir + '*.conf') # Check folder for .conf files
# Run script or show help
if len(args) > 0 and args['run']:
updatemd5()
else:
parser.print_help()
def md5sum(filename, blocksize=65536):
# Open files and calculate MD5 from its content
hash = hashlib.md5()
with open(filename, 'rb') as f:
for block in iter(lambda: f.read(blocksize), b''):
hash.update(block)
return hash.hexdigest()
def updatemd5():
debug = args['verb']
if not agents:
print(' ERROR: There are no .conf files at ' +
confdir + '. Please check the path provided.')
else:
count = 0
for i in agents:
agentmd5 = md5dir + os.path.basename(os.path.splitext(i)[0]) + '.md5'
with open(agentmd5, 'w') as f:
f.write(md5sum(i))
f.close()
count += 1
if debug:
print(os.path.basename(os.path.splitext(i)[0]) + '--> OK')
print('Number of configuration files updated: ' + str(count))
main()