Для отправки уведомления в Telegram при отсутствии ответа на запросы ping с использованием библиотеки aiogram, вам нужно:
1. Создать бота в Telegram через BotFather и получить API токен.
2. Настроить код для мониторинга сервера с помощью команды ping.
3. Отправить сообщение через бота, если сервер не отвечает.
Вот пример кода, который может выполнять такие уведомления:
```python
import asyncio
import subprocess
from aiogram import Bot, Dispatcher, types, executor
# Замените 'TOKEN' вашим API токеном бота
API_TOKEN = 'TOKEN'
# Установите ваш chat_id куда будут приходить уведомления
CHAT_ID = 'YOUR_CHAT_ID'
# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
# Функция для проверки состояния сервера с помощью ping
async def check_server(ip):
for _ in range(3):
process = subprocess.run(['ping', '-c', '1', ip], stdout=subprocess.PIPE)
if process.returncode == 0:
return True # Сервер отвечает на ping
else:
await asyncio.sleep(300) # Ждать 5 минут перед повторением
return False # Сервер не ответил на 3 попытки ping
# Функция для отправки уведомлений в Telegram
async def send_alert(message):
await bot.send_message(CHAT_ID, message)
# Функция основного цикла для мониторинга
async def monitoring_cycle(ip):
while True:
if not await check_server(ip):
return await send_alert(f"Сервер {ip} недоступен!")
await asyncio.sleep(300) # Проверять каждые 5 минут
# Точка входа для приложения
if __name__ == '__main__':
# Укажите IP адрес сервера для мониторинга
ip_address = '192.168.1.1'
loop = asyncio.get_event_loop()
loop.create_task(monitoring_cycle(ip_address))
executor.start_polling(dp, skip_updates=True)
```
В коде используется корутина `check_server(ip)` для попыток пинга сервера. Если сервер не отвечает на 3 попытки, то функция возвращает `False`, и вы получаете уведомление в Telegram. Функция `send_alert(message)` используется для отправки сообщений. Основной цикл мониторинга `monitoring_cycle(ip)` запускается асинхронно, чтобы можно было легко интегрировать его в другие корутины или добавить несколько IP адресов для мониторинга.
Обратите внимание, что вам нужно подставить свой API токен для бота в переменную `API_TOKEN` и идентификатор чата (chat_id), куда должны приходить сообщения, в `CHAT_ID`.
Пожалуйста, убедитесь, что aiogram установлен и работает корректно перед запуском кода. Вы можете установить его через pip:
```sh
pip install aiogram
```
Также, учтите, что в данном примере используется системная команда ping, которая вызывается через модуль subprocess. Для различных операционных систем могут потребоваться небольшие изменения в аргументах команды ping.