def test_authenticate(self): mock_gmp = self.create_gmp_mock(False) return_value = authenticate(mock_gmp, username='******', password='******') self.assertTrue(isinstance(return_value, tuple)) self.assertEqual(return_value[0], 'user') self.assertEqual(return_value[1], 'password')
def test_authenticate_username_is_none( self, mock_input ): # pylint: disable=unused-argument,line-too-long mock_gmp = self.create_gmp_mock(False) return_value = authenticate(mock_gmp, password='******') self.assertTrue(isinstance(return_value, tuple)) self.assertEqual(return_value[0], 'foo') self.assertEqual(return_value[1], 'bar')
def main(): do_not_run_as_root() parser = create_parser(description=HELP_TEXT, logfilename='gvm-cli.log') parser.add_protocol_argument() parser.add_argument('-X', '--xml', help='XML request to send') parser.add_argument('-r', '--raw', help='Return raw XML', action='store_true', default=False) parser.add_argument( '--pretty', help='Pretty format the returned xml', action='store_true', default=False, ) parser.add_argument('--duration', action='store_true', help='Measure command execution time') parser.add_argument('infile', nargs='?', help='File to read XML commands from.') args = parser.parse_args() # If timeout value is -1, then the socket has no timeout for this session if args.timeout == -1: args.timeout = None if args.xml is not None: xml = args.xml else: try: xml = _load_infile(args.infile) except IOError as e: print(e, file=sys.stderr) sys.exit(1) # If no command was given, program asks for one if len(xml) == 0: xml = input() try: validate_xml_string(xml) except GvmError as e: print(e, file=sys.stderr) sys.exit(1) connection = create_connection(**vars(args)) if args.raw: transform = None else: transform = CheckCommandTransform() if args.protocol == PROTOCOL_OSP: protocol_class = Osp else: protocol_class = Gmp try: with protocol_class(connection, transform=transform) as protocol: if args.protocol == PROTOCOL_GMP: # Ask for password if none are given authenticate(protocol, args.gmp_username, args.gmp_password) if args.duration: starttime = time.time() result = protocol.send_command(xml) if args.duration: duration = time.time() - starttime print(f'Elapsed time: {duration} seconds') elif args.pretty: pretty_print(result) else: print(result) except Exception as e: # pylint: disable=broad-except logger.error(e) sys.exit(1) sys.exit(0)
def main(): do_not_run_as_root() parser = create_parser(description=HELP_TEXT, logfilename='gvm-pyshell.log') parser.add_protocol_argument() parser.add_argument( '-i', '--interactive', action='store_true', default=False, help='Start an interactive Python shell', ) parser.add_argument( 'scriptname', nargs='?', metavar="SCRIPT", help='Path to script to be preloaded (example: myscript.gmp.py)', ) parser.add_argument( 'scriptargs', nargs='*', metavar="ARG", help='Arguments for preloaded script', ) args = parser.parse_args() connection = create_connection(**vars(args)) transform = EtreeCheckCommandTransform() global_vars = { 'help': Help(), '__version__': __version__, '__api_version__': __api_version__, } username = None password = None if args.protocol == PROTOCOL_OSP: protocol_class = Osp name = 'osp' else: protocol_class = Gmp name = 'gmp' with protocol_class(connection, transform=transform) as protocol: global_vars[name] = protocol global_vars['__name__'] = '__{}__'.format(name) if args.protocol == PROTOCOL_GMP: if args.gmp_username: (username, password) = authenticate( protocol, username=args.gmp_username, password=args.gmp_password, ) shell_args = Namespace(username=username, password=password) global_vars['args'] = shell_args with_script = args.scriptname and len(args.scriptname) > 0 if with_script: argv = [os.path.abspath(args.scriptname), *args.scriptargs] shell_args.argv = argv # for backwards compatibility we add script here shell_args.script = argv no_script_no_interactive = not args.interactive and not with_script script_and_interactive = args.interactive and with_script only_interactive = not with_script and args.interactive only_script = not args.interactive and with_script if only_interactive or no_script_no_interactive: enter_interactive_mode(global_vars) if script_and_interactive or only_script: if only_script: print( 'Using gvm-pyshell for running scripts only is deprecated. ' 'Please use gvm-script instead', file=sys.stderr, ) script_name = args.scriptname run_script(script_name, global_vars) if not only_script: enter_interactive_mode(global_vars)
def main(): parser = create_parser(description=HELP_TEXT, logfilename='gvm-script.log') parser.add_protocol_argument() parser.add_argument( 'scriptname', metavar="SCRIPT", help='Path to script to be executed (example: myscript.gmp)', ) parser.add_argument('scriptargs', nargs='*', metavar="ARG", help='Arguments for the script') args = parser.parse_args() if 'socket' in args.connection_type and args.sockpath: print( 'The --sockpath parameter has been deprecated. Please use ' '--socketpath instead', file=sys.stderr, ) connection = create_connection(**vars(args)) transform = EtreeCheckCommandTransform() global_vars = { '__version__': __version__, '__api_version__': __api_version__, } username = None password = None if args.protocol == PROTOCOL_OSP: protocol = Osp(connection, transform=transform) global_vars['osp'] = protocol global_vars['__name__'] = '__osp__' else: protocol = Gmp(connection, transform=transform) global_vars['gmp'] = protocol global_vars['__name__'] = '__gmp__' if args.gmp_username: (username, password) = authenticate(protocol, username=args.gmp_username, password=args.gmp_password) argv = [os.path.abspath(args.scriptname), *args.scriptargs] shell_args = Namespace( username=username, password=password, argv=argv, # for backwards compatibility we add script here script=argv, ) global_vars['args'] = shell_args run_script(args.scriptname, global_vars)
def main(): parser = create_parser(description=HELP_TEXT, logfilename='gvm-pyshell.log') parser.add_protocol_argument() parser.add_argument('-i', '--interactive', action='store_true', default=False, help='Start an interactive Python shell') parser.add_argument( 'scriptname', nargs='?', metavar="SCRIPT", help='Path to script to be preloaded (example: myscript.gmp)') parser.add_argument('scriptargs', nargs='*', metavar="ARG", help='Arguments for preloaded script') args = parser.parse_args() if 'socket' in args.connection_type and args.sockpath: print( 'The --sockpath parameter has been deprecated. Please use ' '--socketpath instead', file=sys.stderr) connection = create_connection(**vars(args)) transform = EtreeCheckCommandTransform() global_vars = { 'help': Help(), '__version__': __version__, '__api_version__': __api_version__, } username = None password = None if args.protocol == PROTOCOL_OSP: protocol = Osp(connection, transform=transform) global_vars['osp'] = protocol global_vars['__name__'] = '__osp__' else: protocol = Gmp(connection, transform=transform) global_vars['gmp'] = protocol global_vars['__name__'] = '__gmp__' if args.gmp_username: (username, password) = authenticate(protocol, username=args.gmp_username, password=args.gmp_password) shell_args = Arguments(username=username, password=password) global_vars['args'] = shell_args with_script = args.scriptname and len(args.scriptname) > 0 if with_script: argv = [os.path.abspath(args.scriptname), *args.scriptargs] shell_args.argv = argv # for backwards compatibility we add script here shell_args.script = argv no_script_no_interactive = not args.interactive and not with_script script_and_interactive = args.interactive and with_script only_interactive = not with_script and args.interactive only_script = not args.interactive and with_script if only_interactive or no_script_no_interactive: enter_interactive_mode(global_vars) if script_and_interactive or only_script: script_name = args.scriptname load(script_name, global_vars) if not only_script: enter_interactive_mode(global_vars) protocol.disconnect()
def test_authenticate_already_authenticated(self): mock_gmp = self.create_gmp_mock(True) self.assertIsNone(authenticate(mock_gmp))
def main(): do_not_run_as_root() parser = create_parser(description=HELP_TEXT, logfilename='gvm-script.log') parser.add_protocol_argument() parser.add_argument( 'scriptname', metavar="SCRIPT", help='Path to script to be executed (example: myscript.gmp.py)', ) parser.add_argument('scriptargs', nargs='*', metavar="ARG", help='Arguments for the script') args, script_args = parser.parse_known_args() connection = create_connection(**vars(args)) transform = EtreeCheckCommandTransform() global_vars = { '__version__': __version__, '__api_version__': __api_version__, } username = None password = None if args.protocol == PROTOCOL_OSP: protocol_class = Osp name = 'osp' else: protocol_class = Gmp name = 'gmp' try: with protocol_class(connection, transform=transform) as protocol: global_vars[name] = protocol global_vars['__name__'] = f'__{name}__' if args.protocol == PROTOCOL_GMP: if args.gmp_username: (username, password) = authenticate( protocol, username=args.gmp_username, password=args.gmp_password, ) argv = [os.path.abspath(args.scriptname), *args.scriptargs] shell_args = Namespace( username=username, password=password, argv=argv, # for backwards compatibility we add script here script=argv, # the unknown args, which are owned by the script. script_args=script_args, ) global_vars['args'] = shell_args run_script(args.scriptname, global_vars) except Exception as e: # pylint: disable=broad-except print(e, file=sys.stderr) sys.exit(1) sys.exit(0)