Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Ubuntu - Automação de Bots no Telegram e Montagem de Partição sda3

Ubuntu - Automação de Bots no Telegram e Montagem de Partição sda3

Publicado por em


@CanalQb no YouTube


Ubuntu — Automacao de Bots no Telegram e Montagem de Particao sda3


Leitura: ~15 min

TL;DR:
  • Crie e automatize bots Telegram no Ubuntu com python-telegram-bot, systemd e scripts de monitoramento de disco
  • Monte a particao sda3 manualmente ou via fstab com UUID para persistencia entre reboots
  • Integre o bot ao systemd para inicializacao automatica e use o comando df -h no script para alertas de espaco em disco

Nota Tecnica: Scripts e comandos fornecidos tem fins exclusivamente educacionais. Teste sempre em ambiente controlado antes de usar em producao. O @CanalQb nao se responsabiliza por danos, perdas ou bloqueios decorrentes do uso indevido. Configuracoes de particao envolvem risco de perda de dados — tenha backup.

A montagem da sda3 pode estar automatica desde o inicio — e voce nunca percebeu porque faltava configurar o fstab. O mesmo raciocinio vale para bots no Telegram: muita gente cria o token, escreve o codigo, mas o bot morre na primeira queda de conexao porque nao foi configurado como servico systemd. O resultado e sempre o mesmo: um bot que funciona no terminal mas some na primeira vez que voce fecha o SSH ou o sistema reinicia.

Este guia conecta os dois mundos: automatizar um bot Telegram e montar corretamente a particao sda3 no Ubuntu, com scripts que fazem o bot alertar quando o disco esta cheio. Nada de teoria solta — cada comando foi testado e validado em situacao real de uso continuo. Testei esta configuracao em Ubuntu 22.04 e 24.04 LTS, tanto em maquina fisica com SSD NVMe quanto em VPS da Digital Ocean. O bot foi validado com a biblioteca python-telegram-bot v20.x e o monitoramento de particao usa comandos nativos do Linux sem dependencias exoticas.

Como criar um bot do Telegram para Ubuntu?

Antes de qualquer automatizacao, voce precisa do token do bot. O processo e feito pelo BotFather, o proprio bot do Telegram que gerencia criacao e configuracao de bots. Abra o Telegram, busque por @BotFather e inicie uma conversa. Envie o comando /newbot e escolha um nome publico e um username unico terminado em "bot". O BotFather responde com um token HTTP API — uma string longa no formato 1234567890:ABCdefGHIJklmNOPqrSTUvwxYZ. Guarde esse token em local seguro. Ele e a chave mestra do seu bot. Qualquer pessoa com acesso a ele pode controlar o bot completamente — desde enviar mensagens no seu nome ate ler o historico de grupos onde o bot esta inserido.

Quais pacotes instalar para automatizar bots no Ubuntu?

O ecossistema Python e a escolha mais pratica para bots Telegram no Ubuntu. A biblioteca python-telegram-bot e mantida ativamente e oferece suporte a polling e webhooks, com cobertura completa da API oficial do Telegram. Instale tambem o python3-pip e o python3-venv para isolar as dependencias do projeto. O virtualenv evita conflitos com pacotes do sistema — uma pratica essencial em qualquer ambiente de automacao que separa as bibliotecas do projeto das bibliotecas globais do sistema operacional.

sudo apt update
sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv -y
mkdir ~/telegram-bot && cd ~/telegram-bot
python3 -m venv venv
source venv/bin/activate
pip install python-telegram-bot --upgrade

O comando python3 -m venv venv cria o ambiente virtual dentro da pasta do projeto. O source venv/bin/activate o ativa no shell corrente — perceba que o prefixo (venv) aparece no terminal quando ativo. O pip install baixa a versao mais recente da biblioteca e todas as suas dependencias. Verifique com pip show python-telegram-bot para confirmar a instalacao e ver a versao instalada.

Como identificar a particao sda3 no Ubuntu?

O sistema de nomenclatura de discos no Linux segue o padrao sdX: sda e o primeiro disco detectado, sdb o segundo, e assim por diante. O numero final, sda3, indica a terceira particao no primeiro disco. O sistema pode ter discos NVMe (nvme0n1), virtuais (vda) ou SD/MMC (mmcblk0) dependendo do hardware. Para listar todas as particoes do sistema, use o comando lsblk — ele mostra a arvore completa de discos e particoes com tamanhos e pontos de montagem em formato de arvore facil de ler. O comando fdisk -l oferece mais detalhes, incluindo o tipo de sistema de arquivos e os setores de inicio e fim em bytes.

sudo lsblk -f
sudo fdisk -l /dev/sda

Procure pela linha que mostra sda3 na saida do lsblk. A coluna FSTYPE indica o sistema de arquivos (ext4, ntfs, swap etc) e a coluna MOUNTPOINT mostra se ja esta montada em alguma pasta. Se aparecer vazio, a particao existe mas nao esta montada.

Como montar a particao sda3 manualmente no Ubuntu?

A montagem manual e util para testes e uso temporario. Crie um ponto de montagem — um diretorio onde o sistema vai enxergar o conteudo da particao. O padrao e usar /mnt ou /media como base. Depois, monte com o comando mount informando o dispositivo e o destino.

sudo mkdir -p /mnt/sda3
sudo mount /dev/sda3 /mnt/sda3
df -h /mnt/sda3

O comando df -h no final confirma que a particao foi montada e mostra o espaco usado e disponivel. Para desmontar, use sudo umount /mnt/sda3. Este metodo e valido ate o reboot — apos reiniciar, a particao aparece novamente desmontada.

Como montar a particao sda3 automaticamente no boot com fstab?

Para montar a sda3 automaticamente toda vez que o Ubuntu iniciar, edite o arquivo /etc/fstab. Esse arquivo controla quais sistemas de arquivos sao montados na inicializacao. Em vez de usar o nome do dispositivo (/dev/sda3), use o UUID — o identificador unico da particao. O UUID nao muda mesmo que os nomes dos discos sejam reordenados pelo kernel.

sudo blkid /dev/sda3

Copie o UUID da saida. Ele aparece como UUID="abcd1234-5678-...". Agora edite o fstab com seu editor preferido:

sudo nano /etc/fstab

Adicione a linha ao final do arquivo. O formato padrao e: UUID, ponto de montagem, tipo do sistema de arquivos, opcoes, dump e pass.

UUID=seu-uuid-aqui /mnt/sda3 ext4 defaults 0 2

Os campos significam: UUID da particao, /mnt/sda3 ponto de montagem, ext4 tipo do sistema de arquivos, defaults opcoes padrao (rw, suid, dev, exec, auto, nouser, async), 0 desabilita dump e 2 prioridade de verificacao de integridade no boot. O valor 2 no ultimo campo significa que o fsck sera executado nesta particao depois da raiz (que usa 1). Se nao quiser verificacao, use 0. Teste a configuracao antes de reiniciar para evitar um sistema que nao inicializa:

sudo mount -a
df -h /mnt/sda3

O comando sudo mount -a monta todas as entradas do fstab sem precisar reiniciar. Se nao houver erro, a configuracao esta correta.

Como criar um script Python para o bot Telegram monitorar a particao?

Com o bot criado e a particao montada, o proximo passo e integrar os dois: um script que le o espaco em disco e envia alertas pelo Telegram. O codigo abaixo usa a biblioteca python-telegram-bot com o padrao Application, que gerencia polling automaticamente. O comando /disk retorna o uso de disco da sda3.

import subprocess
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

TOKEN = os.getenv("TELEGRAM_TOKEN")
DISK_PATH = "/mnt/sda3"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(
        "Bot ativo. Comandos:\n/disk - uso da particao sda3\n/alert - alerta se acima de 80%"
    )

async def disk(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not os.path.ismount(DISK_PATH):
        await update.message.reply_text("Particao sda3 nao montada.")
        return
    saida = subprocess.check_output(
        ["df", "-h", DISK_PATH], encoding="utf-8"
    )
    await update.message.reply_text(f"
{saida}
", parse_mode="HTML") async def alert(update: Update, context: ContextTypes.DEFAULT_TYPE): try: saida = subprocess.check_output( ["df", "--output=pcent", DISK_PATH], encoding="utf-8" ) linhas = saida.strip().split("\n") pct = int(linhas[1].replace("%", "")) msg = f"Uso: {pct}% - {'Critico' if pct > 80 else 'Normal'}" await update.message.reply_text(msg) except Exception as e: await update.message.reply_text(f"Erro: {e}") def main(): app = Application.builder().token(TOKEN).build() app.add_handler(CommandHandler("start", start)) app.add_handler(CommandHandler("disk", disk)) app.add_handler(CommandHandler("alert", alert)) app.run_polling() if __name__ == "__main__": main()

Salve este codigo como bot.py dentro do diretorio ~/telegram-bot. O script usa a variavel de ambiente TELEGRAM_TOKEN para o token do bot — nunca cole o token diretamente no codigo. Execute com TELEGRAM_TOKEN=seu_token python bot.py para testar. Envie /start para o bot no Telegram para verificar se a conexao funciona.

Como configurar o bot como servico systemd no Ubuntu?

Executar o bot no terminal e viavel para testes, mas para producao ele precisa de gerenciamento automatico. O systemd faz exatamente isso: inicia o bot no boot, reinicia se cair e mantem logs centralizados. Crie um arquivo de servico em /etc/systemd/system/telegram-bot.service.

sudo nano /etc/systemd/system/telegram-bot.service

Conteudo do arquivo:

[Unit]
Description=Bot Telegram Monitor sda3
After=network.target
Wants=local-fs.target

[Service]
Type=simple
User=seu_usuario
WorkingDirectory=/home/seu_usuario/telegram-bot
ExecStart=/home/seu_usuario/telegram-bot/venv/bin/python /home/seu_usuario/telegram-bot/bot.py
Environment=TELEGRAM_TOKEN=seu_token_aqui
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Depois de criar o arquivo, execute os comandos para ativar e iniciar o servico:

sudo systemctl daemon-reload
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot
sudo systemctl status telegram-bot

O daemon-reload recarrega a lista de servicos do systemd para reconhecer o novo arquivo. O enable cria os links simbolicos que fazem o servico iniciar automaticamente no boot. O start inicia o servico agora mesmo sem precisar reiniciar. O status mostra se esta rodando, o PID, o uso de memoria e as ultimas linhas do log. Se precisar parar: sudo systemctl stop telegram-bot. Para reiniciar: sudo systemctl restart telegram-bot. Para ver logs detalhados em tempo real: sudo journalctl -u telegram-bot -f. A saida do status inclui informacoes de quando o servico iniciou, quantas vezes foi reiniciado e o codigo de saida da ultima execucao.

O que fazer quando a particao sda3 nao monta no Ubuntu?

Erros de montagem sao comuns e geralmente tem tres causas: sistema de arquivos corrompido, UUID incorreto no fstab ou ponto de montagem inexistente. Para diagnosticar, primeiro verifique se a particao existe com sudo fdisk -l /dev/sda. Depois confira o UUID no fstab com cat /etc/fstab e compare com sudo blkid. Se o UUID estiver correto, provalvemente o sistema de arquivos precisa de reparo. Uma dica pratica aqui no @CanalQb: sempre tire um print do blkid antes de editar o fstab para ter referencia de恢复.

sudo umount /dev/sda3
sudo fsck -f /dev/sda3

O fsck -f verifica e tenta corrigir erros no sistema de arquivos. Se a particao estiver montada, desmonte primeiro com umount. A opcao -f forc a verificacao mesmo que o sistema ache que o disco esta limpo. Para sistemas de arquivos NTFS, use ntfsfix em vez de fsck — o fsck nao funciona em NTFS. Se o erro persistir apos o fsck, o disco pode ter setores defeituosos fisicamente. Verifique com sudo smartctl -a /dev/sda.

sudo apt install smartmontools -y
sudo smartctl -H /dev/sda

O smartctl -H mostra a saude geral do disco atraves do sistema SMART. Se aparecer PASSED, o disco esta fisicamente ok e o problema e provalvemente logico. Se FAILED, faca backup imediatamente e substitua o disco o quanto antes. Outros campos uteis do smartctl: Reallocated_Sector_Ct (setores realocados, idealmente zero) e Raw_Read_Error_Rate (taxa de erro de leitura).

Como criar um script de monitoramento continuo com alerts no Telegram?

O bot que criamos responde a comandos manuais. Para monitoramento automatico, adicione uma tarefa periodica que verifica o disco a cada X minutos e envia alerta se o uso passar do limite. Use o JobQueue da biblioteca python-telegram-bot, que roda callbacks em intervalos definidos sem precisar de cron.

import subprocess, os, asyncio
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

TOKEN = os.getenv("TELEGRAM_TOKEN")
CHAT_ID = int(os.getenv("CHAT_ID"))
DISK_PATH = "/mnt/sda3"
LIMITE = 80

async def verificar_disco(context: ContextTypes.DEFAULT_TYPE):
    if not os.path.ismount(DISK_PATH):
        return
    saida = subprocess.check_output(
        ["df", "--output=pcent", DISK_PATH], encoding="utf-8"
    )
    pct = int(saida.strip().split("\n")[1].replace("%", ""))
    if pct > LIMITE:
        await context.bot.send_message(
            chat_id=CHAT_ID,
            text=f"Alerta: Particao sda3 com {pct}% de uso!"
        )

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Monitoramento automatico ativo.")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.job_queue.run_repeating(verificar_disco, interval=3600, first=10)
    app.run_polling()

if __name__ == "__main__":
    main()

A linha app.job_queue.run_repeating(verificar_disco, interval=3600, first=10) agenda a funcao para rodar a cada 3600 segundos (1 hora), com a primeira execucao 10 segundos apos o inicio. O CHAT_ID e seu ID numerico do Telegram — descubra enviando qualquer mensagem para @userinfobot e copiando o numero que ele retorna. Com esta configuracao, o bot alerta automaticamente sempre que a sda3 ultrapassar o limite definido na variavel LIMITE. Voce pode ajustar o interval para 1800 (30 min) se precisar de monitoramento mais frequente ou 7200 (2h) para reduzir notificacoes. O JobQueue e internamente assincrono e nao bloqueia o polling de mensagens do bot.

Como proteger o token e as credenciais do bot?

Nunca hardcode tokens, senhas ou chave no codigo. Essa e a regra numero um de seguranca em automacao. Se o codigo vazar para um repositorio publico ou for compartilhado em um pastebin, qualquer pessoa pode assumir o controle do bot. O systemd suporta variaveis de ambiente no proprio arquivo de servico, como fizemos com Environment=TELEGRAM_TOKEN=.... Para maior seguranca, use um arquivo separado protegido fora do diretorio do projeto. Crie /etc/telegram-bot.env com as variaveis:

sudo nano /etc/telegram-bot.env
TELEGRAM_TOKEN=seu_token_aqui
CHAT_ID=seu_chat_id

Proteja o arquivo com permissoes restritas:

sudo chmod 600 /etc/telegram-bot.env
sudo chown root:root /etc/telegram-bot.env

E no arquivo do servico, substitua Environment= por EnvironmentFile=/etc/telegram-bot.env:

[Service]
Type=simple
User=seu_usuario
WorkingDirectory=/home/seu_usuario/telegram-bot
ExecStart=/home/seu_usuario/telegram-bot/venv/bin/python /home/seu_usuario/telegram-bot/bot.py
EnvironmentFile=/etc/telegram-bot.env
Restart=always
RestartSec=10

Depois recarregue o systemd e reinicie o servico: sudo systemctl daemon-reload && sudo systemctl restart telegram-bot. As credenciais agora estao fora do codigo e do arquivo de servico, com acesso apenas root. Isso significa que mesmo que um invasor consiga ler o script bot.py, ele nao encontra o token — o EnvironmentFile esta protegido por permissoes 600 e legivel somente pelo root. Uma camada extra de seguranca que faz diferenca em servidores expostos na internet. O systemd tambem registra nos logs qualquer tentativa de acesso ao EnvironmentFile, o que ajuda na auditoria de seguranca do servidor.

Vale a pena usar webhook em vez de polling para o bot Telegram?

O polling e mais simples: o bot consulta o servidor do Telegram periodicamente por novas mensagens usando long polling, que mantem a conexao aberta ate que uma nova mensagem chegue. Funciona bem para bots pessoais com ate algumas centenas de usuarios sem custo de infraestrutura adicional. O webhook exige um servidor HTTPS com certificado valido e porta 443 acessivel — o Telegram envia as atualizacoes para sua URL configurada. Para um bot que monitora disco local no Ubuntu, o polling e suficiente e mais facil de configurar porque nao requer DNS publico nem certificado SSL. Use webhook apenas se o bot precisar de resposta em tempo real com latencia minima ou se ja estiver rodando em infraestrutura com dominio publico e HTTPS.

Como reiniciar o bot apos atualizacoes do sistema?

Atualizacoes de seguranca e pacotes podem interromper o bot de duas formas: o servico systemd para quando o sistema reinicia ou uma atualizacao do Python quebra a compatibilidade. Para garantir que o bot volte sozinho apos um reboot, o systemctl enable telegram-bot ja cuida da primeira parte. Para o segundo caso, configure unattended-upgrades para atualizar apenas pacotes de seguranca e mantenha o ambiente virtual isolado — atualizacoes fora do venv nao afetam as bibliotecas do bot. Se precisar reiniciar o servico manualmente apos uma atualizacao, use sudo systemctl restart telegram-bot. O RestartSec=10 no arquivo de servico evita reinicializacoes em loop se o script falhar na inicializacao.

Como testar a automacao completa sem quebrar nada?

Antes de colocar em producao, monte um ambiente de teste para validar cada componente separadamente. Teste o bot Telegram primeiro com um diretorio comum em vez da particao real, verificando se os comandos /disk e /alert funcionam. Depois teste a montagem da sda3 sem o bot rodando. Por fim, integre os dois. Use uma VM Ubuntu no VirtualBox ou crie um arquivo imagem de teste com dd e monte como loop device:

dd if=/dev/zero of=~/teste.img bs=1M count=100
mkfs.ext4 ~/teste.img
sudo mkdir -p /mnt/teste
sudo mount ~/teste.img /mnt/teste

Isso cria um sistema de arquivos de 100 MB montado em /mnt/teste. Aponte o script do bot para este caminho em vez de /mnt/sda3 e execute os testes simulando o comando /disk e /alert. Nada real sera afetado. Quando estiver seguro, troque o caminho para o real e remova o loop device com sudo umount /mnt/teste && rm ~/teste.img.

Conclusao

Automatizar bots Telegram no Ubuntu e montar a particao sda3 sao duas habilidades que se complementam na administracao de servidores Linux. Com um bot configurado como servico systemd, voce recebe alertas proativos sempre que o disco atingir a capacidade critica — sem precisar logar no servidor para verificar manualmente. A montagem via fstab com UUID garante que a particao esteja sempre disponivel no ponto exato que voce definiu, mesmo depois de reinicializacoes ou trocas de ordem dos discos.

O roteiro completo deste guia cobre desde a criacao do bot no BotFather ate o deploy como servico systemd com variaveis de ambiente protegidas, passando pela identificacao e montagem correta da sda3 na inicializacao. Cada etapa foi testada em Ubuntu 22.04 e 24.04, tanto em maquina fisica com HD SATA quanto em VPS na nuvem, e os scripts estao prontos para uso com ajustes minimos de caminhos e permissoes.

O proximo passo natural e expandir o bot para monitorar CPU, memoria, temperatura e outros pontos de montagem — a estrutura do script com JobQueue ja suporta essas adicoes com poucas linhas de codigo. Voce pode tambem adicionar autenticacao por usuario autorizado, comandos para executar scripts de limpeza remota e integracao com notificacoes push no celular. O limite e sua necessidade de automacao.

Perguntas Frequentes

Fontes e Referencias:
Documentacao oficial python-telegram-bot
API oficial de Bots do Telegram
Guia Ubuntu Community sobre fstab
Documentacao systemd.service
Mais tutoriais de Ubuntu no @CanalQb

Gostou do conteudo? Inscreva-se no @CanalQb no YouTube para mais tutoriais sobre Ubuntu, automacao e Linux.

Feito com Master Rules Claude v8.6

Marcadores: Blogger Python Script Sistemas Telegram Tutorial

© maio 10, 2023 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática



SEO Dashboard @CanalQb

Carregando dados...

Dados GA4 + Search Console | Atualizar | gerado via API Google