Avisar por e-mail se o IP da conexão ADSL mudar

Publicado por Fábio Berbert de Paula 03/10/2003

[ Hits: 11.723 ]

Homepage: https://fabio.automatizando.dev

Download ip_monitor.pl




Como o nome já diz, este script serve para me enviar um e-mail todas as vezes que o endereço IP da conexão ADSL de um servidor que você administre remotamente mude. O script é inteligente, só envia um e-mail por cada IP novo e está configurado para ser gravado em /usr/local/monitor/. Agende o script para rodar a cada 5 minutos no crontab e zé fini!

  



Esconder código-fonte

#!/usr/bin/perl
# ip_monitor.pl
# Usado para enviar o endereco IP da conexao ADSL por e-mail
# para o administrador do sistema.
# Caso o IP esteja down, ele tenta reiniciar o servico ADSL
# automaticamente.
#
# Programador por: Fabio Berbert de Paula
# <fabio@vivaolinux.com.br>
# http://www.vivaolinux.com.br

use strict;

# variaveis globais - configure de acordo com suas prefs.
my $meu_email  = "login\@dominio.com";
my $base_dir   = "/usr/local/monitor/";
my $ip_file    = $base_dir . "last_ip.txt";
my $last_ip    = 0;
my $current_ip = "";

if (-f $ip_file) {
   open(R, $ip_file);
   $last_ip = <R>; chomp($last_ip);
   close(R);
}

my $ifconfig = `/sbin/ifconfig ppp0`;
if ($ifconfig =~ /inet addr:(.*)P-t-P/) {
   $current_ip = $1;
   $current_ip =~ s/ //g;
} else {
   system("/sbin/adsl start");
}

if ($last_ip ne $current_ip && $current_ip) {
   #print "entrei\n";
   open(W, "> $ip_file");
   print W $current_ip;
   close(W);

   if ($last_ip!=0) {
      # enviar email com o ip
      system("echo $current_ip | /usr/sbin/sendmail $meu_email");
   }
} 

Scripts recomendados

Script para X-chat

Descubra se seu e-mail ou conta foi "pwned"

Gmail::SendMail - Enviando emails usando gmail

Perl Check Port - Entenda melhor os sockets

Tweetin - Poste tweets pelo terminal


  

Comentários
[1] Comentário enviado por gustavo_marcon em 04/10/2003 - 10:49h

Olá tenho um adsl da brturbo e gostaria de saber se posso pendurar um servidor neste link...

Ele usa dhcp, esse script pode ser útil p/ mim??

[2] Comentário enviado por fabio em 04/10/2003 - 12:50h

Seu endereço IP fica atribuído em qual interface de rede? eth0, eth1, ppp0, ...? Basta localizar no arquivo a linha "/sbin/ifconfig ppp0" e alterar (se necessário) para a interface de rede que lhe convém.

Depois vá até a linha:
system("/sbin/adsl start");
e mude o comando /sbin/adsl start para o comando que você dá para iniciar o serviço da brturbo, se é que o comando já não é esse.

[]'s,
Fábio

[3] Comentário enviado por ysidoro em 08/10/2003 - 10:00h

Acho que o comando 'mail' do mailx é melhor e vc pode dar formato ao message, inclusso enviar cc: para outros enderecos:
# enviar email com o ip
system("echo $current_ip | /usr/bin/mail -s $current_ip $meu_email");
desste jeito vc tem a IP no subject.

[4] Comentário enviado por fabio em 08/10/2003 - 10:13h

Boa idéia! É que na verdade eu usava originalmente o /usr/sbin/exim (uso MTA Exim), mudei para sendmail na hora de publicar para melhorar a portabilidade do script, mas com certeza o mail é melhor para isso. Valeu!

[5] Comentário enviado por abelmt em 25/02/2004 - 11:22h

Oi Eu tenho um mandrake securety firewall e nele eu tenho um speedy home. Gostaria de saber como que eu adiciono este script sendo que no meu mandrake não tem a pasta monitor Obrigado

[6] Comentário enviado por hfkc em 22/03/2004 - 08:53h

O script esta retornando o seguinte erro.
(Missing operator before fconfig?)
syntax error at ./ip_monitor.pl line 27, near "/sbin/ifconfig ppp0"
Execution of ./ip_monitor.pl aborted due to compilation errors.


HFKC

[7] Comentário enviado por hfkc em 22/03/2004 - 08:53h

O script esta retornando o seguinte erro.
(Missing operator before fconfig?)
syntax error at ./ip_monitor.pl line 27, near "/sbin/ifconfig ppp0"
Execution of ./ip_monitor.pl aborted due to compilation errors.


HFKC

[8] Comentário enviado por sonicsunday em 19/04/2006 - 15:24h

Aparentemente já está tudo funcionando, tudo executa normalmente, porém eu não recebo os e-mails. Verifiquei no log dos meus e-mails e reparei q ele não está sendo gerado. Acompanhei mais um pouco e percebi que não é criado o arquivo “last_ip.txt”. Para efeito de teste resolvi gerar o arquivo manualmente e dar acessos de escrita a ele, mas mesmo assim ele não é alterado.



Estou utilizando o Red Rat 9 e ele está configurado pra ser gateway e servidor de DNS apenas

[9] Comentário enviado por medeiros64 em 28/05/2006 - 15:21h

e ai fabio queria uma maozinha tem como fazer esse escrip escrever um arquivo texto ??? tipo só queria q ele subistui-se o mesmo arquivo.txt


alguema ai pode me ajudar ??? já tento fazer com q mei ip fique em um txt faz tempo

valew galera



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts