def METHOD_NAME(scriptName, sysArgs):
    logger.info('Executing custom script: %s, parameters: %s' % (scriptName, ' '.join(map(str, sysArgs))))
    path = customDir + os.path.sep + scriptName
    if not os.access(path, os.X_OK):
        logger.warning('Custom script: %s is not executable; skipping execution.' % scriptName)
        return
    try:
        process = subprocess.Popen([path] + sysArgs, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE, shell=False)
        try:
            timer = Timer(timeoutSeconds, terminateProcess, [process, scriptName])
            timer.start()
            output, error = process.communicate()
            if process.returncode == -15:
                logger.error('Custom script: %s terminated after timeout of %s second[s].'
                             % (scriptName, timeoutSeconds))
                return
            if process.returncode != 0:
                logger.info('return code: %s' % str(process.returncode))
                raise Exception(error)
            logger.info('Custom script: %s finished successfully; output: \n%s' %
                        (scriptName, str(output)))
        finally:
            timer.cancel()
    except (OSError, Exception) as e:
        logger.exception("Custom script: %s finished with error: \n%s" % (scriptName, e))