From e47c0d35a97939b51ffe8c8b45506ab6c8010f0f Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Wed, 7 Feb 2024 13:59:49 +0000 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D1=82-=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=8F=D0=BB=D1=8C=D1=89=D0=B8=D0=BA=20v0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 6 ++++++ main.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 .env create mode 100644 main.py diff --git a/.env b/.env new file mode 100644 index 0000000..ae369f7 --- /dev/null +++ b/.env @@ -0,0 +1,6 @@ +TG_TOKEN = 'YOUR:TOKEN' +TG_CHAT_ID = 'YOUR:CHAT_ID' +DOMAIN = 'YOUR_DOMAIN' +PORT = 80 +TG_FMESSAGE = 'Сервер {0}:{1} недоступен' +REQUEST_TIMEOUT = 600 \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..fcf6600 --- /dev/null +++ b/main.py @@ -0,0 +1,39 @@ +from dotenv import load_dotenv +import os +import socket +import time +import telebot + +load_dotenv() + +TOKEN = os.getenv('TG_TOKEN') +CHAT_ID = os.getenv('TG_CHAT_ID') +DOMAIN = os.getenv('DOMAIN') +PORT = int(os.getenv('PORT', 80)) +FMESSAGE = os.getenv('TG_FMESSAGE') +REQUEST_TIMEOUT = int(os.getenv('TIMEOUT', 60)) # Время таймаута опроса в секундах + +last_status = True # Последнее состояние + +bot = telebot.TeleBot(TOKEN) + +def check_server(domain, port): + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Создадим сокет + sock.settimeout(10) # Время ожидания подключения + result = sock.connect_ex((domain, port)) # 0 - успех + sock.close() # Закрываем соединение + return result == 0 + except: + return False + + +while True: + # Если статус изменился + if last_status != check_server(DOMAIN, PORT): + last_status = not last_status # Меняем последний статус на обратный + if not last_status: # Если недоступен, то шлем сообщение + bot.send_message(chat_id=CHAT_ID, text=FMESSAGE.format(DOMAIN, PORT)) + + time.sleep(REQUEST_TIMEOUT) # Засыпаем +