Pequena automação em Bash que detecta mudanças no IP público de um servidor Linux e envia uma notificação para um canal do Discord.
flowchart LR
A["Servidor Linux"] --> B["Consulta IP público"]
B --> C{"IP mudou?"}
C -- "Não" --> D["Encerra sem notificar"]
C -- "Sim" --> E["Webhook do Discord"]
E --> F["Atualiza estado local"]
- Consulta o IP público usando HTTPS.
- Mantém o último IP conhecido em um arquivo de estado local.
- Só envia mensagem quando detecta uma mudança.
- Usa timeout e falha explicitamente em erros HTTP.
- Recebe o webhook por variável de ambiente, sem gravar credenciais no repositório.
- Pode ser executado manualmente, pelo cron ou por um timer do systemd.
- Linux
- Bash 4 ou superior
- curl
- Webhook de um canal do Discord
git clone https://github.com/Adrianozk/linux-server-ip-notification.git
cd linux-server-ip-notification
sudo ./install.shO instalador copia o script para:
/usr/local/bin/notify-ip-to-discord
Defina a URL do webhook do Discord sem adicioná-la ao código:
export DISCORD_WEBHOOK_URL='https://discord.com/api/webhooks/SEU_WEBHOOK'Trate o webhook como uma credencial. Não o publique no GitHub, em logs ou capturas de tela.
notify-ip-to-discordNa primeira execução, o script envia o IP atual e cria o arquivo de estado. Nas execuções seguintes, só envia outra mensagem quando o IP mudar.
Por padrão, o estado fica em:
~/.local/state/linux-server-ip-notification/last_ip.txt
Abra o crontab do usuário:
crontab -eDefina o webhook e execute o script a cada cinco minutos:
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/SEU_WEBHOOK
*/5 * * * * /usr/local/bin/notify-ip-to-discord >/dev/null 2>&1| Variável | Obrigatória | Descrição |
|---|---|---|
DISCORD_WEBHOOK_URL |
Sim | URL do webhook usado para enviar a notificação |
IP_ENDPOINT |
Não | Endpoint alternativo para consultar o IP público |
XDG_STATE_HOME |
Não | Diretório-base alternativo para o arquivo de estado |
Desenvolvido por Adriano Luís Fernandes como uma automação para servidores Linux e ambientes de homelab.