def _choose_new_hosts(self):
        def get_prompt():
            if self._local_hosts:
                return "You may confirm this list (press 'Enter'), add (enter '+') or remove (enter its number) host: "
            else:
                return "You may confirm this list (press 'Enter') or add (enter '+') host: "

        def get_hosts_names():
            return ', '.join('%s (#%d)' % (h, i)
                             for i, h in enumerate(self._local_hosts)) or '[]'

        self._logger.log(
            "The following new hosts have been founded in your ssh config:",
            sleep=0)
        self._logger.log(get_hosts_names(), color='blue')

        while True:
            number = p_input(get_prompt()).strip()

            if number == '':
                break

            if number == '+':
                host = p_input("Enter host: ")
                conf = self._config.get_host(host)
                if list(conf.keys()) == ['host']:
                    self._logger.log('There is no config for host "%s"!' %
                                     host,
                                     color='red',
                                     file=sys.stderr)
                else:
                    self._local_hosts.append(host)

            else:
                try:
                    number = int(number)
                    if number >= len(self._local_hosts) or number < 0:
                        raise IndexError
                except (ValueError, IndexError):
                    self._logger.log("Incorrect index!",
                                     color='red',
                                     file=sys.stderr)
                    continue
                else:
                    self._local_hosts.pop(number)

            self._logger.log(get_hosts_names(), color='blue')

        if not self._local_hosts:
            self._valediction()
            sys.exit(0)
        return
    def _choose_new_hosts(self):
        def get_prompt():
            if self._local_hosts:
                return "You may confirm this list (press 'Enter'), add (enter '+') or remove (enter its number) host: "
            else:
                return "You may confirm this list (press 'Enter') or add (enter '+') host: "

        def get_hosts_names():
            return ', '.join('%s (#%d)' % (h, i) for i, h in enumerate(self._local_hosts)) or '[]'

        self._logger.log("The following new hosts have been founded in your ssh config:", sleep=0)
        self._logger.log(get_hosts_names(), color='blue')

        while True:
            number = p_input(get_prompt()).strip()

            if number == '':
                break

            if number == '+':
                host = p_input("Enter host: ")
                conf = self._config.get_host(host)
                if list(conf.keys()) == ['host']:
                    self._logger.log('There is no config for host "%s"!' % host, color='red', file=sys.stderr)
                else:
                    self._local_hosts.append(host)

            else:
                try:
                    number = int(number)
                    if number >= len(self._local_hosts) or number < 0:
                        raise IndexError
                except (ValueError, IndexError):
                    self._logger.log("Incorrect index!", color='red', file=sys.stderr)
                    continue
                else:
                    self._local_hosts.pop(number)

            self._logger.log(get_hosts_names(), color='blue')

        if not self._local_hosts:
            self._valediction()
            sys.exit(0)
        return
Example #3
0
    def _choose_new_hosts(self):
        def get_connection_name(conn, number):
            name = self._get_sa_connection_name(conn)
            return '%s (#%d)' % (name, number)

        def get_connections_names():
            return (', '.join(
                get_connection_name(c, i)
                for i, c in enumerate(self._sa_connections))
                    or 'There are no more connections!')

        if not self._sa_connections:
            self._logger.log(
                "There are no new connections on ServerAuditor's servers.")
            self._valediction()
            sys.exit(0)

        self._logger.log(
            "The following new hosts have been founded on ServerAuditor's servers:",
            sleep=0)
        self._logger.log(get_connections_names(), color='blue')

        prompt = "You may confirm this list (press 'Enter') or remove host (enter its number): "
        while len(self._sa_connections):
            number = p_input(prompt).strip()

            if number == '':
                break

            try:
                number = int(number)
                if number >= len(self._sa_connections) or number < 0:
                    raise IndexError
            except (ValueError, IndexError):
                self._logger.log("Incorrect index!",
                                 color='red',
                                 file=sys.stderr)
            else:
                self._sa_connections.pop(number)
                self._logger.log(get_connections_names(), color='blue')

        if not self._sa_connections:
            self._valediction()
            sys.exit(0)
        return
    def _choose_new_hosts(self):
        def get_connection_name(conn, number):
            name = self._get_sa_connection_name(conn)
            return '%s (#%d)' % (name, number)

        def get_connections_names():
            return (', '.join(get_connection_name(c, i) for i, c in enumerate(self._sa_connections))
                    or 'There are no more connections!')

        if not self._sa_connections:
            self._logger.log("There are no new connections on ServerAuditor's servers.")
            self._valediction()
            sys.exit(0)

        self._logger.log("The following new hosts have been founded on ServerAuditor's servers:", sleep=0)
        self._logger.log(get_connections_names(), color='blue')

        prompt = "You may confirm this list (press 'Enter') or remove host (enter its number): "
        while len(self._sa_connections):
            number = p_input(prompt).strip()

            if number == '':
                break

            try:
                number = int(number)
                if number >= len(self._sa_connections) or number < 0:
                    raise IndexError
            except (ValueError, IndexError):
                self._logger.log("Incorrect index!", color='red', file=sys.stderr)
            else:
                self._sa_connections.pop(number)
                self._logger.log(get_connections_names(), color='blue')

        if not self._sa_connections:
            self._valediction()
            sys.exit(0)
        return