Source code for cis_interface.command_line

#!/usr/bin/python
import sys
import time
from logging import debug
import signal
import traceback
from cis_interface import runner


cisRunner = None
INTERRUPT_TIME = 0
COLOR_TRACE = '\033[30;43;22m'
COLOR_NORMAL = '\033[0m'


# pretty pprint
[docs]def pprint(*args): s = ''.join(str(i) for i in args) print(COLOR_TRACE + '{}' + COLOR_NORMAL.format(s))
[docs]def signal_handler(sigCaught, frame): # pragma: no cover global INTERRUPT_TIME, cisRunner debug('CisRunner interrupted with signal %d', sigCaught) now = time.time() elapsed = now - INTERRUPT_TIME debug('CisRunner.handler: elapsed since last interrupt: %d', elapsed) INTERRUPT_TIME = now if elapsed < 5: pprint(' ') pprint('*********************************************************') pprint('* Interrupted twice within 5 seconds: shutting down *') pprint('*********************************************************') # signal.siginterrupt(signal.SIGTERM, True) # signal.siginterrupt(signal.SIGINT, True) debug("CisRunner.closing all channels") if cisRunner: cisRunner.terminate() return 1 else: pprint('') pprint('*********************************************************') pprint('* Interrupted: Displaying channel summary *') pprint('* interrupt again (within 5 seconds) to exit *') pprint('*********************************************************') if cisRunner: cisRunner.printStatus() pprint('*********************************************************') debug('CisRunner handler(%d) returns', sigCaught) return 0
[docs]def cisrun(): global cisRunner try: signal.signal(signal.SIGTERM, signal_handler) signal.signal(signal.SIGINT, signal_handler) signal.siginterrupt(signal.SIGTERM, False) signal.siginterrupt(signal.SIGINT, False) prog = sys.argv[0].split('/')[-1] models = sys.argv[1:] cisRunner = runner.get_runner(models, cis_debug_prefix=prog) cisRunner.run() debug("cisRunner returns, exiting") except Exception as ex: pprint("cisrun: exception: %s" % type(ex)) print(traceback.format_exc()) print('')
if __name__ == '__main__': cisrun() sys.exit(0)