diff options
-rw-r--r-- | scanner.py | 15 | ||||
-rwxr-xr-x | suddenly-opened-ports-checker.py | 2 |
2 files changed, 12 insertions, 5 deletions
@@ -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): |