From 7086eeac1b9c7056aa910de70135bd1b90774373 Mon Sep 17 00:00:00 2001 From: Thomas Williams Date: Sun, 7 Jul 2024 18:17:02 +0100 Subject: [PATCH 1/2] Closes issue #23 --- main.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index d3c2982..495b32d 100755 --- a/main.py +++ b/main.py @@ -31,6 +31,7 @@ import requests import threading import signal import socket +import sys from functools import partial from concurrent.futures import ThreadPoolExecutor, as_completed from bs4 import BeautifulSoup @@ -199,8 +200,17 @@ def logURLLog(hostname, logTime, url, responseTime): def main(): - signal.signal(signal.SIGTERM, signal_handler) - signal.signal(signal.SIGINT, signal_handler) + if sys.platform.startswith('win'): + + import win32api + + win32api.SetConsoleCtrlHandler(lambda sig, frame: + + signal_handler(signal.CTRL_C_EVENT, frame), True) + else: + + signal.signal(signal.SIGTERM, signal_handler) + signal.signal(signal.SIGINT, signal_handler) hostMonitorThread = threading.Thread(target=monitorHost, args=(stop_event,)) urlMonitorThread = threading.Thread(target=monitorUrls, args=(stop_event,)) From b145ec2d47847f31049224ad1f1b52c4ae058689 Mon Sep 17 00:00:00 2001 From: Thomas Williams Date: Sun, 7 Jul 2024 18:32:18 +0100 Subject: [PATCH 2/2] Resolves issue #28 --- main.py | 63 +++++++++++++++++++++++++++++++++--------------- requirements.txt | 4 +++ 2 files changed, 47 insertions(+), 20 deletions(-) create mode 100644 requirements.txt diff --git a/main.py b/main.py index d3c2982..e13c6f6 100755 --- a/main.py +++ b/main.py @@ -22,29 +22,20 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import config -import psutil -import os -import time -import log -import requests -import threading -import signal -import socket -from functools import partial -from concurrent.futures import ThreadPoolExecutor, as_completed -from bs4 import BeautifulSoup -from log import logsManager -from datetime import datetime +def get_pip_command(): + + if sys.version_info >= (3, 0): -if config.loggingMode == 'rabbitmq': + return 'pip3' - import rabbitmq - rabbitmq = rabbitmq.rabbitMQClient(config.rabbitmqca,config.rabbitmqcacert,config.rabbitmqcakey,config.rabbitmqHost,config.rabbitmqPort,config.rabbitmqRoutingKey) + else: -stop_event = threading.Event() -nonPOSIXCPULoads = [] -lock = threading.Lock() + return 'pip' + +def install_dependencies(): + + pip_command = get_pip_command() + subprocess.check_call([pip_command, 'install', '-r', 'requirements.txt', '--user']) def signal_handler(sig, frame): print('SIGINT/SIGTERM aknowledged. Stopping script gracefully, please wait...') @@ -199,6 +190,8 @@ def logURLLog(hostname, logTime, url, responseTime): def main(): + install_dependencies() + signal.signal(signal.SIGTERM, signal_handler) signal.signal(signal.SIGINT, signal_handler) @@ -212,4 +205,34 @@ def main(): urlMonitorThread.join() if __name__ == "__main__": + + import sys + import subprocess + + install_dependencies() + + import config + import psutil + import os + import time + import log + import requests + import threading + import signal + import socket + from functools import partial + from concurrent.futures import ThreadPoolExecutor, as_completed + from bs4 import BeautifulSoup + from log import logsManager + from datetime import datetime + + if config.loggingMode == 'rabbitmq': + + import rabbitmq + rabbitmq = rabbitmq.rabbitMQClient(config.rabbitmqca,config.rabbitmqcacert,config.rabbitmqcakey,config.rabbitmqHost,config.rabbitmqPort,config.rabbitmqRoutingKey) + + stop_event = threading.Event() + nonPOSIXCPULoads = [] + lock = threading.Lock() + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a760dfd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +psutil +requests +bs4 +datetime