nfv/nfv/nfv-tools/nfv_tools/forensic.py

78 lines
2.2 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import argparse
import codecs
import datetime
import sys
from nfv_common import config
from nfv_common import forensic
def process_main():
"""
Forensic - Process Main
"""
try:
arg_parser = argparse.ArgumentParser()
arg_parser.add_argument('-c', '--config', help='configuration file')
arg_parser.add_argument('-s', '--start_date', help='start date')
arg_parser.add_argument('-e', '--end_date', help='end date')
args = arg_parser.parse_args()
if args.config:
config.load(args.config)
else:
print("No configuration given.")
sys.exit(1)
if args.start_date:
try:
start_date = datetime.datetime.strptime(args.start_date,
"%Y-%m-%d %H:%M:%S")
except ValueError:
print("Start-Date '%s' is invalid, "
"expected=<YYYY-MM-DD HH:MM:SS>" % args.start_date)
sys.exit(1)
else:
start_date = datetime.datetime.min
if args.end_date:
try:
end_date = datetime.datetime.strptime(args.start_date,
"%Y-%m-%d %H:%M:%S")
except ValueError:
print("End-Date '%s' is invalid, "
"expected=<YYYY-MM-DD HH:MM:SS>" % args.start_date)
sys.exit(1)
else:
end_date = datetime.datetime.max
forensic.forensic_initialize()
utf8_writer = codecs.getwriter('utf8')
sys.stdout = utf8_writer(sys.stdout)
def progress(percentage):
sys.stdout.write("\r Complete: {0:.0f}%".format(percentage))
sys.stdout.flush()
records = forensic.evidence_from_files(config.CONF.get('files'),
start_date, end_date, progress)
forensic.analysis_stdout(records)
except Exception as e:
print("Exception: %s" % e)
sys.exit(1)
finally:
forensic.forensic_finalize()
if __name__ == '__main__':
process_main()