aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2021-06-06 01:15:07 +0300
committerEvgeny Zinoviev <me@ch1p.io>2021-06-06 01:15:07 +0300
commit4314ab72e35e91045cca003b1edc80650754846b (patch)
treeb17378d3ded3b984f8418bf86589172c9ec88579
parent48b851d7ad1b9d0355dff11121dcc58a59bda780 (diff)
better error handling
-rw-r--r--scanner.py15
-rwxr-xr-xsuddenly-opened-ports-checker.py2
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):