Pular para conteúdo

Image title

Backup via telegram

Crie um bot

acesse o BotFather
#Alguns comandos basicos para criar, editar e deletar um bot no telegram
/newbot - crie um novo bot
/setname - mudar o nome de um bot
/setdescription - alterar a descrição do bot
/setabouttext - alterar informações sobre bot
/setuserpic - alterar a foto do perfil do bot
/setcommands - alterar a lista de comandos
/deletebot - delete um bot
/token - gerar token de autorização
/revoke - revogar token de acesso do bot
Dados do bot
1
2
3
4
TOKEN:
# ID do chat e do chat group são diferenciados por "-"
ID-CHAT:
ID-CHAT-GROUP:
Teste de envio pelo navegador
https://api.telegram.org/botTOKEN_AQUI/sendMessage?chat_id=ID_CHAT_OU_CHAT_GROUP&text=Mensagem

pacotes necessarios
apt install curl wget zip unzip

teste o envio usando a ferramenta curl
1
2
3
4
curl --silent -X POST \
--data-urlencode "chat_id=-505050886" \
--data-urlencode "text=Mensagem Teste” \
"https://api.telegram.org/botTOKEN_AQUI/sendMessage"
crie o diretorio onde ficará os backups
mkdir /etc/backups-telegram/
script do Telegram
#!/bin/bash
# Autor: ivanjr
# script original: Rudimar Remonti

# Verificar a presença de dependências
dependencies=("curl" "zip" "tar")
for dep in "${dependencies[@]}"; do
 if ! command -v "$dep" &>/dev/null; then
   echo "Erro: O comando '$dep' não foi encontrado. Certifique-se de que todas as dependências estão instaladas."
   exit 1
 fi
done

# Verificar se o token foi fornecido e é válido
if [ -z "$TOKEN" ] || ! [[ $TOKEN =~ ^[0-9]+:[0-9]+ ]]; then
  echo "Erro: O token do bot do Telegram não foi configurado corretamente. Defina o TOKEN no início do script."
  exit 1
fi

# Definir o método de compactação padrão
COMPAC='tar'

# Função para imprimir mensagens de erro no log
function log_error {
  local log_file="/var/log/telegram_script_error.log"
  local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  echo "[$timestamp] Erro: $1" >> "$log_file"
}

# Documentação aprimorada
AJUDA='Uso: telegram [opções]

opções:
 -m: Para enviar uma mensagem
   Exemplo: telegram -m "ID Chat" "Mensagem linha 1" "Mensagem linha 2" "Mensagem linha 3"
   Exemplo: telegram -m "ID Usuário" "Mensagem linha 1" "Mensagem linha 2" "Mensagem linha 3"
 -f: Para enviar um arquivo
   Exemplo: telegram -f "-100000000" "/diretorio/arquivo" "nome do arquivo compactado" "Comentário"
   Exemplo: telegram -f "12345689" "/var/log/syslog" "syslog" "Logs do sistema"
'
# Verificar as opções
if [ "$1" = "-m" ]; then
  chat_id="$2"
  message="$3${NN=}$4${NN=}$5"
  curl --silent -X POST --data-urlencode "chat_id=$chat_id" --data-urlencode "text=$message" "https://api.telegram.org/bot${TOKEN}/sendMessage?disable_web_page_preview=true&parse_mode=html" | grep -q '"ok":true' &>/dev/null
  if [ $? -ne 0 ]; then
     error "Erro ao enviar mensagem"
  fi
elif [ "$1" = "-f" ]; then
  chat_id="$2"
  file_path="$3"
  file_name="$4"
  comment="$5"
  datetime=$(date +%Y-%m-%d_%H-%M)
  if [ "$COMPAC" = "zip" ]; then
     file_zip_name="/tmp/${datetime}.$file_name.zip"
     zip "$file_zip_name" "$file_path" &>/dev/null || error "Erro ao compactar arquivo"
  else
   file_zip_name="/tmp/${datetime}.$file_name.tar.gz"
   tar -czpf "$file_zip_name" "$file_path" &>/dev/null || error "Erro ao compactar arquivo"
  fi
  curl -F document=@"$file_zip_name" -F caption="$comment" "https://api.telegram.org/bot${TOKEN}/sendDocument?chat_id=$chat_id" &>/dev/null || error "Erro ao enviar arquivo"
  rm -f "$file_zip_name" # Remover o arquivo temporário de forma segura
else
 echo "$AJUDA"
 exit 1
fi

exit 0

coloque o script na pasta bin
/bin/telegram
chmod +x /bin/telegram

adicione o seu token,ID e metodo de compactação no script
1
2
3
4
5
6
7
8
9
nano /bin/telegram
-m: para enviar uma mensagem
-f: para enviar arquivos

telegram -m "-ID Chat" "Mensagem linha 1" "Mensagem linha 2" "Mensagem linha 3"
telegram -m "ID Usuário" "Mensagem linha 1" "Mensagem linha 2" "Mensagem linha 3"

telegram -f "-100000000" "/diretorio/arquivo" "nome do arquivo compactado" "Comentário"
telegram -f "12345689" "/var/log/syslog" "syslog" "Logs do sistema"
Backup de um Banco de Dados Mysql/MariaDB:
#!/bin/bash
# Autor: ivanjr.eti.br
# --------------------------------------
# USUARIO DO BANCO DE DADOS
USER_DB='root'
# SENHA DO BANCO DE DADOS
SENHA_DB='senha'
# NOME DO BANCO DE DADOS
NOME_BANCO=testedb
# NOME PARA O BACKUP
NOME_DO_BKP=testedb
# NOME DO SERVIÇO
NOME_DO_SERVER=testedb
# ID TELEGRAM
ID_TELEGRAM=-505012806
#----Servidor que recebe o Backup ------
#———DESCOMENTE A LINHA ABAIXO CASO OPTE POR ENVIAR VIA SSH———
# Usuário
#USER_SSH=‘user’
# Senha
#PASS_SSH='senha'
# Porta
#PORT_SSH='22'
# Diretório onde ira salvar
#DIR_SSH='/home/user/backup'
# IP do servidor
#IP_SSH='172.16.0.2’
# --------------------------------------
DATABKP=`date  +%Y-%m-%d`
NOME_BD="/tmp/${NOME_BANCO}.${DATABKP}.tar.gz"
mysqldump  -h  127.0.0.1  -u  ${USER_DB}  -p${SENHA_DB}  -B  ${NOME_BANCO} > /tmp/${NOME_BANCO}.${DATABKP}.sql
/bin/telegram  -f  "${ID_TELEGRAM}"  "/tmp/${NOME_BANCO}.${DATABKP}.sql"  "${NOME_DO_BKP}"  "${NOME_BANCO}"  &>/dev/null
/bin/telegram  -m  "${ID_TELEGRAM}”  “Backup: ${NOME_DO_BKP} do serviço: ${NOME_BANCO}, foi efetuado com sucesso…”  &>/dev/null
#———DESCOMENTE A LINHA ABAIXO CASO OPTE POR ENVIAR VIA SSH———
#backup  "${NOME_DO_BKP}"  "/tmp/${NOME_BANCO}.${DATABKP}.sql"  "${USER_SSH}"  "${PASS_SSH}"  "${IP_SSH}"  "${PORT_SSH}"  "${DIR_SSH}"
rm  -f  /tmp/*.sql  &>/dev/null
Backup de um Banco de Dados postgresql
#!/bin/bash
# Autor: ivanjr.eti.br
# --------------------------------------
# USUARIO DO BANCO DE DADOS
USER_DB='seu_usuario'
# SENHA DO BANCO DE DADOS
SENHA_DB='sua_senha'
# NOME DO BANCO DE DADOS
NOME_BANCO='testedb'
# NOME PARA O BACKUP
NOME_DO_BKP='testedb'
# NOME DO SERVIÇO
NOME_DO_SERVER='testedb'
# ID TELEGRAM
ID_TELEGRAM='-505012806'
#----Servidor que recebe o Backup ------
#———DESCOMENTE A LINHA ABAIXO CASO OPTE POR ENVIAR VIA SSH———
# Usuário
#USER_SSH='user'
# Senha
#PASS_SSH='senha'
# Porta
#PORT_SSH='22'
# Diretório onde ira salvar
#DIR_SSH='/home/user/backup'
# IP do servidor
#IP_SSH='172.16.0.2’
# --------------------------------------
DATABKP=`date  +%Y-%m-%d`
NOME_BD="/tmp/${NOME_BANCO}.${DATABKP}.tar.gz" 

# Fazer o backup do PostgreSQL
pg_dump -h localhost -U ${USER_DB} -d ${NOME_BANCO} > /tmp/${NOME_BANCO}.${DATABKP}.sql


# Enviar o backup via Telegram
/bin/telegram -f "${ID_TELEGRAM}" "/tmp/${NOME_BANCO}.${DATABKP}.sql" "${NOME_DO_BKP}" "${NOME_BANCO}" &>/dev/null
/bin/telegram -m "${ID_TELEGRAM}" "Backup: ${NOME_DO_BKP} do serviço: ${NOME_BANCO}, foi efetuado com sucesso..." &>/dev/null

#———DESCOMENTE A LINHA ABAIXO CASO OPTE POR ENVIAR VIA SSH———
#backup "${NOME_DO_BKP}" "/tmp/${NOME_BANCO}.${DATABKP}.sql" "${USER_SSH}" "${PASS_SSH}" "${IP_SSH}" "${PORT_SSH}" "${DIR_SSH}"
rm -f /tmp/*.sql &>/dev/null

Agendando o backup (Cron)
1
2
3
crontab -e
#Toda Domingo às 06h:
00  06  *  7  *  /etc/backups/backup_phpipam-db_telegram.sh