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!
#!/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");
}
}
[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.
[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.
[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.
[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