Nikovit <Путешествия и разработка>

Пишем ping бота для Telegram на Python

  2018-04-19.jpg


Для простого мониторинга доступности ресурса нет смысла подымать Zabbix или Nagios, сегодня мы напишем простого бота который пингует ресурс/сайт и если ресурс не доступен то отправляет сообщение в Telegram.



Регистрируем бота, получаем токен, создаем канал как это описано в начале статьи

Также нам понадобиться библиотека для Python pyTelegramBotAPI

Устанавливаем библиотеку:
pip install pyTelegramBotAPI


Бот достаточно простой и незамысловатый, если у вас возникнут сложности то напишите в комментарии статьи, я обязательно отвечу.

import os
import telebot

hostname = "google.com"
channel = '@test'
token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

response = os.system('ping ' + hostname)
bot = telebot.TeleBot(token)


if response == 0:
  print(hostname + ' is up!')
else:
  print(hostname + ' is down!')
  bot.send_message(channel, hostname + ' is down!')

Запускаем по Cron в linux или Диспетчеру заданий в windows.

Github


0
Андрей
12.06.2018 07:25:39
А как дописать что бы можно было пинговать несколько машин???
0
16.08.2018 14:51:14
Обернуть в цикл for, а список доменов в словарь, должно получиться как то так:
import os
import telebot

hostname = ["google.com", yandex.ru]
channel = '@test'
token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

response = os.system('ping ' + hostname)
bot = telebot.TeleBot(token)

for domain in hostname:
    if response == 0:
      print(hostname + ' is up!')
    else:
      print(hostname + ' is down!')
      bot.send_message(channel, hostname + ' is down!')
0
Константин
18.02.2019 11:23:52
Это прописывается в main.py?
0
19.02.2019 11:09:14
На самом деле нет разницы как файл скрипта назвать, можно и main.py
0
KOSTYA
02.06.2019 18:49:52
Что то пробувыл, не получается у меня чтобы например гугл сайт писал об ошибке в канал
0
09.06.2019 20:42:26
сайт гугла скорее всего постоянно рабочий, в канал приходят сообщения только если не отвечает
0
Daniel
16.10.2021 17:35:01
он странно работает, правильно ли я всё делаю?
ожидал что он будет в цикле чтобы запустил и висит пока не закроешь
странно говорит ,что я в сети ,хотя эхо не доходит(смотри смд)
нет связи с ботом,хотя токен рабочий
Фото:
0
Ram1R
26.11.2021 22:43:44
Можно ли сделать так чтобы добавив бота в группу можно было в сообщении указать ип и после чего бот начал пинговать по указанному ип в сообщении?
0
Ruden
13.04.2022 05:31:15
Можно. Только я только про библиотеку aiogram знаю, с telebot не работал.

Создаешь пустой хендлер и туда прописываешь присвоение переменной хостнейм значение текста сообщения потом выполняешь тот же скрипт, но у тебя все сообщения в группе будут попадать в этот хендлер поэтому нужно либо как-то определять что это именно ip либо завернуть всё в try except
0
Андрей
01.12.2021 05:26:11
Подскажите, как сделать, чтобы в случае потери связи и постоянном пинге бот не спамил сообщениями?
А отправил одно оповещение и при появлении ping'а другое?