VAMOS LÁ:
CRIA OS SCRIPT E DIRETORIOS
crie o script
nano /usr/lib/zabbix/alertscripts/telegram.py
#!/bin/python3
#Desenvolvido por: B7telecom em parceria com o ChatGPT #
#Author: RENATO #
#Nome: telegram.py
#Data: 04/06/2025 13h30m #
import os
import re
import sys
import requests
#### Inicio Declaracao de variaveis ####
# Parâmetros do Telegram
telegram_token = '8101048514:AAHCnAU2yL8oJ0K4W4VWd9-C-JI9e45ZVPs'
# URL base do Zabbix
zabbix_url = 'http://192.168.1.101/zabbix'
# Credenciais de login
username = 'Admin'
password = 'zabbix'
#### Fim da declaracao de variaveis ####
# Obtém os argumentos da linha de comando
mensagem = sys.argv[1]
titulo = sys.argv[2]
chat_id = sys.argv[3]
graph_directory = '/var/tmp/zabbix/'
# Função para extrair o item_id da mensagem
def extract_item_id(mensagem):
# Procura o padrão "Item ID: <item_id>" na mensagem
match = re.search(r'Item ID:\s*(\d+)', mensagem)
if match:
# Extrai o valor do item_id
item_id = match.group(1)
return item_id
else:
return None
# Extrai o item_id da mensagem
item_id = extract_item_id(mensagem)
print('\n\n\nItem ID:', item_id)
# Verifica se o item_id foi encontrado na mensagem
#if item_id is None:
# print('Item ID não encontrado na mensagem')
# exit()
# URL do login
login_url = f'{zabbix_url}/index.php'
# Dados do formulário de login
login_data = {
'name': username,
'password': password,
'enter': 'Sign in',
'autologin': 1,
'request': login_url
}
# Sessão do requests
session = requests.Session()
# Faz login
response = session.post(login_url, data=login_data)
# Verifica se o login foi bem-sucedido
if 'Falha no login' in response.text:
print('Falha no login')
exit()
# URL do gráfico específico
# Item
graph_url = f'{zabbix_url}/chart.php?from=now-1h&to=now&&itemids[0]={item_id}&type=0&profileIdx=web.charts.filter'
# Faz a requisição do gráfico
graph_response = session.get(graph_url)
# Verifica se a requisição foi bem-sucedida
if graph_response.status_code != 200:
print('Falha ao obter o gráfico')
exit()
# Caminho completo para salvar o arquivo do gráfico
graph_filename = os.path.join(graph_directory, f'graph_{item_id}.png')
with open(graph_filename, 'wb') as file:
file.write(graph_response.content)
print(f'O gráfico foi salvo em {graph_filename}')
# URL do envio de mensagem com foto
url = f'https://api.telegram.org/bot{telegram_token}/sendPhoto'
# Dados do formulário (caption e chat_id)
data = {
'caption': f'{titulo}\n\n{mensagem}',
'chat_id': chat_id
}
# Envio da foto via Telegram
files = {'photo': open(graph_filename, 'rb')}
response = requests.post(url, data=data, files=files)
# Verifica se o envio foi bem-sucedido
if response.status_code == 200:
print('Mensagem e gráfico enviados com sucesso via Telegram')
else:
print('Falha ao enviar mensagem e gráfico via Telegram')
importe o templete
0 Comentários