Показаны сообщения с ярлыком telegram. Показать все сообщения
Показаны сообщения с ярлыком telegram. Показать все сообщения

понедельник, 11 января 2021 г.

Быстро отправить в windows (где есть curl) сообщение в telegram

 В общем в виндах надо отправить в скрипте быренько сообщение в телеграм... Проще простого... Для начала заводим бота в телеграме (получаем botID), узнаём id чата, куда отправлять сообщения и после этого там где необходимо пишем собственно в самом скрипте (bat файле допустим):

set chatID=424324534
set botToken=JILA3j4i23r53409tit0k:2353464573cdksdserw432
set message="Something going on %computername%"

curl https://api.telegram.org/bot%botToken%/sendMessage?chat_id=%chatID%^^^&text=%message%



суббота, 5 декабря 2020 г.

Мониторим обновления в ubuntu с помощью python, influxdb, grafana

Заваливаешь бывает ты такой по ssh на какой нибудь сервер и если все актуальные обновления натянуты, то тебе рисуется в приветственном сообщении такая картинка:


 


 И мне понадобилось знать когда вот приходят эти обновления, заодно чтобы рисовалось на графике - когда они поступали, когда устанавливались ну и заодно чтобы отзванивало о новых обновлениях в телеграмм...

Вообще в ubuntu информация об обновлениях в приветственное сообщение когда по ssh заваливаешь попадает из файла, который находится по пути /var/lib/update-notifier/updates-available. Вот его мы и будем использовать... 

У меня уже имеется в хозяйстве готовый стэк с influxdb в связке с grafana, которая рисует данные из него. Всё что мне необходимо - это послать http запросом данные метрик в influxdb, а об отрисовке данных и посылке их в telegram уже позаботится grafana. Для начала в influx я создаю новую базу с именем softwareupdates. Чтобы не долго заморачиваться - я написал скрипт на python:

#!/usr/bin/env python3

import time
import requests
import sys
import re
import os
import subprocess

hostname = os.uname()[1]
influxdbinitial = 'https://influxdb.host.tld/write?db=softwareupdates'


# функция для добавления в БД influxdb инфы о обновлениях
def puttoinfluxdb(totalupdates, securityupdates):
   # заправляем инфу о кол-ве общих обновлений
   data_binary = 'softwareupdates,host='+hostname+' totalupdates='+totalupdates
   try:
       response = requests.post(influxdbinitial, data=data_binary)
       print(response)
   except requests.exceptions.RequestException as e:  # This is the correct syntax
       print (e)
       sys.exit(1)
   # заправляем инфу о кол-ве обновлений на безопасность
   data_binary = 'softwareupdates,host='+hostname+' securityupdates='+securityupdates
   try:
       response = requests.post(influxdbinitial, data=data_binary)
       print(response)
   except requests.exceptions.RequestException as e:  # This is the correct syntax
       print (e)
       sys.exit(1)


def updatesnotifyget():
   #subprocess.run(["/usr/bin/apt", "update"])
   #time.sleep(3)
   f = open("/var/lib/update-notifier/updates-available", "r")
   lines = f.readlines()
   # print(lines[1])  
   totalupdates = re.sub("[^0-9^]", "", lines[1])
   securityupdates = re.sub("[^0-9^]", "", lines[2])
   puttoinfluxdb(totalupdates, securityupdates)

if __name__ == "__main__":
   updatesnotifyget()

Теперь сохраняю этот скрипт в /opt/scripts/checksoftwareupdates.py и даю права на выполнение оного с помощью chmod+x /opt/scripts/checksoftwareupdates.py. Далее пихаем скрипт в cron:

# check software updates
*/58,*/10,*/20 * * * *
/opt/scripts/checksoftwareupdates.py

# ^ буду запускать каждую 10, 20 и 58 минуту каждого часа

В графане создаю новый график, куда запихиваю данные и в итоге получаю:

Там же, в графане, делаем в этом графике алерт и в итоге в телегу при появлении каких то обновлений в системе начинает прилетать:


суббота, 10 октября 2020 г.

Скрипт для проверки на ответ от DNS серверов на запрос об определённом домене с отсылкой в случае успешного результата в telegram

 Предположим мы только что прописали новый домен (предположим A запись) на каких-либо NS серверах и мы хотим проверять определённые dns серверы через определённый промежуток времени на ответ по нашему запросу на наш новый домен и если проверяемый dns сервер отдаст нам в результатах нами прописаный ip-адрес, который припаркован к нашему новому домену - нам прилетало бы уведомление в телеграм. Пишем на bash'е, если что понадобится dig, curl. Также понадобится (если ещё не заведён) завести себе бота в телеграме через @BotFather...

#!/bin/bash
# Created by Constantine in 2020
# $1 - domain for check
# $2 - dns server
# $3 - check ip address
# $4 - timeout between dns quireies in seconds
# here example for launch: ./checkdns.sh domain.tld 8.8.8.8 44.55.55.5 10
 
telegram_bot_id='krewpo2k3r5p253tewreqe3124234324235245345ds'
telegram_chat_id='34534534534'
telegram_message="Domain $1 has been found and now available by dns response from $2. Domain ip address is: $3"
 
 
while true; do
    if dig -t a $1 $2 | grep -q $3; then
        echo found
        curl -s -X POST https://api.telegram.org/bot$telegram_bot_id/sendMessage -d chat_id=$telegram_chat_id -d text="$telegram_message"
        exit 1
    else
        echo not found
    fi
    sleep $4
done

Пример запуска: ./checkdns.sh domain.tld 8.8.8.8 44.55.55.5 10

Теперь скрипт каждые 10 секунд будет делать запрос и в случае положительного результата нам прилетит в телегу:

Domain domain.tld has been found and now available by dns response from 8.8.8.8. Domain ip address is: 44.55.55.5