From 4314ab72e35e91045cca003b1edc80650754846b Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Sun, 6 Jun 2021 01:15:07 +0300 Subject: better error handling --- scanner.py | 15 +++++++++++---- suddenly-opened-ports-checker.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/scanner.py b/scanner.py index 73c82bd..0a6fa91 100644 --- a/scanner.py +++ b/scanner.py @@ -22,6 +22,7 @@ class TCPScanner: self.timeout = timeout self.results = [] self.q = queue.SimpleQueue() + self.failed = False def scan(self, num_threads=5): for port in self.ports: @@ -36,12 +37,18 @@ class TCPScanner: for t in threads: t.join() - return self.results - def run(self): try: while True: - self._scan(self.q.get(block=False)) + if self.failed: + break + + try: + self._scan(self.q.get(block=False)) + except Exception as e: + logger.exception(e) + self.failed = True + break except queue.Empty: return @@ -73,4 +80,4 @@ class TCPScanner: conn.close() except socket.timeout: - self.results.append((port, PortState.FILTERED)) + self.results.append((port, PortState.FILTERED)) \ No newline at end of file diff --git a/suddenly-opened-ports-checker.py b/suddenly-opened-ports-checker.py index e52d443..f45f0ff 100755 --- a/suddenly-opened-ports-checker.py +++ b/suddenly-opened-ports-checker.py @@ -84,7 +84,7 @@ class Worker(Thread): def run(self): logger.info(f'starting {self.name} ({self.concurrency} threads)') self.scanner.scan(num_threads=self.concurrency) - self.done = True + self.done = not self.scanner.failed logger.info(f'finished {self.name}') def get_results(self): -- cgit v1.2.3