diff --git a/netbox/extras/management/commands/nbshell.py b/netbox/extras/management/commands/nbshell.py index 4c11d8821..07f943d15 100644 --- a/netbox/extras/management/commands/nbshell.py +++ b/netbox/extras/management/commands/nbshell.py @@ -70,10 +70,23 @@ class Command(BaseCommand): return namespace def handle(self, **options): + namespace = self.get_namespace() + # If Python code has been passed, execute it and exit. if options['command']: - exec(options['command'], self.get_namespace()) + exec(options['command'], namespace) return - shell = code.interact(banner=BANNER_TEXT, local=self.get_namespace()) + # Try to enable tab-complete + try: + import readline + import rlcompleter + except ModuleNotFoundError: + pass + else: + readline.set_completer(rlcompleter.Completer(namespace).complete) + readline.parse_and_bind('tab: complete') + + # Run interactive shell + shell = code.interact(banner=BANNER_TEXT, local=namespace) return shell