#!/usr/bin/env python
# -*- coding: utf-8 -*-
import telebot
import config
from ping3 import ping
import time
import Hosts
bot = telebot.TeleBot(config.token)
response_host = ''
count = 0
def not_available():
for host in Hosts.host:
response_host = ping(host, )
if response_host == None:
bot.send_message(config.chat_id, f"{host} ,— хост не доступен")
time.sleep(3)
print('недоступен')
if response_host != None:
is_available()
def is_available():
for index, host in enumerate(Hosts.host, start=0):
index = index + 1
print(index)
response_host = ping(host, )
if response_host != None:
bot.send_message(config.chat_id, f"{host} ,— хост доступен")
print('доступен')
time.sleep(3)
elif index == len(Hosts.host):
pass
def main_program():
while True:
not_available()
is_available()
if __name__ == "__main__":
main_program()
работает так:
есть список в который записаны хосты, с помощью библиотеки ping3
проверяет их на доступность, если не доступен отсылает название хоста и то что он не доступен в мой телеграм, и на оборот.
отправку не доступности- решить легко, каждые 15 мин с помощью библиотеки тайм.
а вот когда подымутся, я хочу знать один раз. и то и то должно опрашиваться постоянно.
я пробывал считать итерации, пробывал считать индексы...
не могу придумать. подскажите, может у кого-то есть идеи?
# -*- coding: utf-8 -*-
import telebot
import config
from ping3 import ping
import time
import Hosts
bot = telebot.TeleBot(config.token)
response_host = ''
count = 0
def not_available():
for host in Hosts.host:
response_host = ping(host, )
if response_host == None:
bot.send_message(config.chat_id, f"{host} ,— хост не доступен")
time.sleep(3)
print('недоступен')
if response_host != None:
is_available()
def is_available():
for index, host in enumerate(Hosts.host, start=0):
index = index + 1
print(index)
response_host = ping(host, )
if response_host != None:
bot.send_message(config.chat_id, f"{host} ,— хост доступен")
print('доступен')
time.sleep(3)
elif index == len(Hosts.host):
pass
def main_program():
while True:
not_available()
is_available()
if __name__ == "__main__":
main_program()
работает так:
есть список в который записаны хосты, с помощью библиотеки ping3
проверяет их на доступность, если не доступен отсылает название хоста и то что он не доступен в мой телеграм, и на оборот.
отправку не доступности- решить легко, каждые 15 мин с помощью библиотеки тайм.
а вот когда подымутся, я хочу знать один раз. и то и то должно опрашиваться постоянно.
я пробывал считать итерации, пробывал считать индексы...
не могу придумать. подскажите, может у кого-то есть идеи?
0 2 2
Комментарии (45)
Так, дело в том что у меня мало опыта. Вообще я системный администратор. Программа должна работать так: если не пингуется сервер, то телеграм бот отправляет это в мой телеграм- что сервак лёг. Затем если он сам поднялся по какой то причине, отправить один раз! Ну если авария, то сервер может упасть ещё раз, и я хочу что бы он резолвился раз в 15 мин- это просто реализовать с помощью библиотеки тайм
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import telebot
import config
from ping3 import ping
import time
import Hosts
bot = telebot.TeleBot(config.token)
response_host = ''
def not_available():
cnt = 0
cnt2 = len(Hosts.host)
print(cnt2)
print(type(cnt2))
hostbot = ""
while True:
for host in Hosts.host:
response_host = ping(host, )
if response_host == None:
cnt2 = len(Hosts.host)
bot.send_message(config.chat_id, f"{host} ,— хост не доступен")
hostbot = f"{host}"
print(hostbot)
time.sleep(10)
print('недоступен')
if response_host != None and hostbot != response_host and cnt2 != 0:
cnt2 = cnt2 - 1
bot.send_message(config.chat_id, f"{host} ,— хост доступен")
print(f"{host}{cnt2}")
print('доступен')
time.sleep(3)
def main_program():
not_available()
if __name__ == "__main__":
main_program()
удалось победить отправку 1 раз но, когда какой-то хост стает не доступен, переменная cnt2 = len(Hosts.host) опять стает больше нуля. и опять постоянная отправка что хост доступен.Помогите разобраться
Для добавления комментариев необходимо авторизоваться
Легенды Крови
Удивительный мир фантазий, сражений и тайн... Битв