mirror of
				https://github.com/jtesta/ssh-audit.git
				synced 2025-11-04 03:02:15 +01:00 
			
		
		
		
	When running against multiple hosts, now prints each target host regardless of output level. (#309)
This commit is contained in:
		@@ -219,6 +219,7 @@ For convenience, a web front-end on top of the command-line tool is available at
 | 
				
			|||||||
### v3.4.0-dev
 | 
					### v3.4.0-dev
 | 
				
			||||||
 - Added warning to all key exchanges that do not include protections against quantum attacks due to the Harvest Now, Decrypt Later strategy (see https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later).
 | 
					 - Added warning to all key exchanges that do not include protections against quantum attacks due to the Harvest Now, Decrypt Later strategy (see https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later).
 | 
				
			||||||
 - Migrated from deprecated `getopt` module to `argparse`; partial credit [oam7575](https://github.com/oam7575).
 | 
					 - Migrated from deprecated `getopt` module to `argparse`; partial credit [oam7575](https://github.com/oam7575).
 | 
				
			||||||
 | 
					 - When running against multiple hosts, now prints each target host regardless of output level.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### v3.3.0 (2024-10-15)
 | 
					### v3.3.0 (2024-10-15)
 | 
				
			||||||
 - Added Python 3.13 support.
 | 
					 - Added Python 3.13 support.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,11 +54,11 @@ class OutputBuffer:
 | 
				
			|||||||
        self.__is_color_supported = ('colorama' in sys.modules) or (os.name == 'posix')
 | 
					        self.__is_color_supported = ('colorama' in sys.modules) or (os.name == 'posix')
 | 
				
			||||||
        self.line_ended = True
 | 
					        self.line_ended = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _print(self, level: str, s: str = '', line_ended: bool = True) -> None:
 | 
					    def _print(self, level: str, s: str = '', line_ended: bool = True, always_print: bool = False) -> None:
 | 
				
			||||||
        '''Saves output to buffer (if in buffered mode), or immediately prints to stdout otherwise.'''
 | 
					        '''Saves output to buffer (if in buffered mode), or immediately prints to stdout otherwise.'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # If we're logging only 'warn' or above, and this is an 'info', ignore message.
 | 
					        # If we're logging only 'warn' or above, and this is an 'info', ignore message, unless always_print is True (useful for printing informational lines regardless of the level setting).
 | 
				
			||||||
        if self.get_level(level) < self.__level:
 | 
					        if (always_print is False) and (self.get_level(level) < self.__level):
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.use_colors and self.colors_supported and len(s) > 0 and level != 'info':
 | 
					        if self.use_colors and self.colors_supported and len(s) > 0 and level != 'info':
 | 
				
			||||||
@@ -145,22 +145,22 @@ class OutputBuffer:
 | 
				
			|||||||
            self._print('head', s, line_ended)
 | 
					            self._print('head', s, line_ended)
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def fail(self, s: str, line_ended: bool = True, write_now: bool = False) -> 'OutputBuffer':
 | 
					    def fail(self, s: str, line_ended: bool = True, write_now: bool = False, always_print: bool = False) -> 'OutputBuffer':
 | 
				
			||||||
        self._print('fail', s, line_ended)
 | 
					        self._print('fail', s, line_ended, always_print=always_print)
 | 
				
			||||||
        if write_now:
 | 
					        if write_now:
 | 
				
			||||||
            self.write()
 | 
					            self.write()
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def warn(self, s: str, line_ended: bool = True) -> 'OutputBuffer':
 | 
					    def warn(self, s: str, line_ended: bool = True, always_print: bool = False) -> 'OutputBuffer':
 | 
				
			||||||
        self._print('warn', s, line_ended)
 | 
					        self._print('warn', s, line_ended, always_print=always_print)
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def info(self, s: str, line_ended: bool = True) -> 'OutputBuffer':
 | 
					    def info(self, s: str, line_ended: bool = True, always_print: bool = False) -> 'OutputBuffer':
 | 
				
			||||||
        self._print('info', s, line_ended)
 | 
					        self._print('info', s, line_ended, always_print=always_print)
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def good(self, s: str, line_ended: bool = True) -> 'OutputBuffer':
 | 
					    def good(self, s: str, line_ended: bool = True, always_print: bool = False) -> 'OutputBuffer':
 | 
				
			||||||
        self._print('good', s, line_ended)
 | 
					        self._print('good', s, line_ended, always_print=always_print)
 | 
				
			||||||
        return self
 | 
					        return self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def sep(self) -> 'OutputBuffer':
 | 
					    def sep(self) -> 'OutputBuffer':
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -532,9 +532,9 @@ def output(out: OutputBuffer, aconf: AuditConf, banner: Optional[Banner], header
 | 
				
			|||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    host = '%s:%d' % (aconf.host, aconf.port)
 | 
					                    host = '%s:%d' % (aconf.host, aconf.port)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            out.good('(gen) target: {}'. format(host))
 | 
					            out.good('(gen) target: {}'. format(host), always_print=True)
 | 
				
			||||||
        if client_audit:
 | 
					        if client_audit:
 | 
				
			||||||
            out.good('(gen) client IP: {}'.format(client_host))
 | 
					            out.good('(gen) client IP: {}'.format(client_host), always_print=True)
 | 
				
			||||||
        if len(header) > 0:
 | 
					        if len(header) > 0:
 | 
				
			||||||
            out.info('(gen) header: ' + '\n'.join(header))
 | 
					            out.info('(gen) header: ' + '\n'.join(header))
 | 
				
			||||||
        if banner is not None:
 | 
					        if banner is not None:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user