script de servidor que envia um e-mail toda vez que o ip global muda

5

Estou configurando um servidor da Web que não terá um ip global estático. Será na casa dos meus pais e eu não serei capaz de fazê-lo quando o ip global mudar. O ip global mudará toda vez que o roteador for reiniciado, o que acontece uma vez por mês.

Eu preciso de um script que me envie um e-mail toda vez que o ip global mudar. Então eu posso atualizar o DNS para que meu site funcione novamente.

Eu não sei nada sobre scripts no Ubuntu, mas eu sei o básico em Java e php.

Computador: servidor Ubuntu 13.10, Globo iMac G4.

    
por Alvar 10.11.2013 / 12:38

4 respostas

7

Já pensou em usar script / ferramenta de atualização de DNS dinâmico?

por exemplo. ddclient disponível como pacote Debian / Ubuntu.

Ele pode atualizar sua zona DNS OU atualizar seu registro DNS dinâmico (para que você possa ssh in) e executar script personalizado para enviar e-mail.

    
por AnFi 10.11.2013 / 13:43
2

Estou usando isso para verificar meu endereço IP uma vez por dia.

wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' > ~/myip

Se você tem um computador Linux com endereço IP estático em algum lugar eu diria apenas rcp o arquivo ~ / myip lá.

Se esse não for o caso, você sempre pode usar uma ferramenta de linha de comando útil chamada sendEmail (não confunda com o sendmail). Esta ferramenta facilita o envio de um email com um comando de uma linha. link

Você poderia escrever algo ao longo destas linhas:

myip='wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//''<br>
sendEmail -f [email protected] -m $myip 
    
por Louis Papaloizou 10.11.2013 / 21:52
2

Com base no código de esta resposta eu modifiquei e adicionei mais algumas opções para depuração.

Eu tive que configurar o servidor de e-mail e o usuário crontab -e para que isso me enviasse por e-mail meu endereço IP atual. Você também precisará tornar o arquivo de script executável e certificar-se de que seu usuário tenha lido e gravado na pasta em que você colocou os scripts.

#!/bin/bash
NOWIPADDR="/home/scripts/nowipaddr"
GETIPADDR="dig +short myip.opendns.com @resolver1.opendns.com"
LOG="/home/scripts/ip.log"
timestamp=$( date +%T )
curDate=$( date +"%m-%d-%y" )

if [ -f $NOWIPADDR ]; then
  if [[ '$GETIPADDR' = $(< $NOWIPADDR) ]]; then
    echo $curDate $timestamp " IP address check: " $(< $NOWIPADDR) >> $LOG
  else
    $GETIPADDR > $NOWIPADDR
    mail -s "Server IP" [email protected] < $NOWIPADDR
fi
else
  curl $GETIPADDR > $NOWIPADDR
  mail -s "Server IP" [email protected] < $NOWIPADDR
fi
    
por Jeffrey Stines 16.04.2016 / 03:18
2

Você pode escrever um script simples para ser executado a partir do cron e diariamente em um determinado momento.

Pegue o ip existente em um arquivo e, em seguida, execute o seu loop if para verificar o novo ip com o ip existente e se ambos os ip's permanecerem iguais, ele pode ignorar o envio de email. senão se houver alteração no IP deve enviar email com o novo ip.

você pode executar o script por hora, diariamente, semanalmente.

NOWIPADDR="nowipaddr"
GETIPADDR="ifconfig.me"


    if [ -f $NOWIPADDR ]
    then
       if [ 'cat $NOWIPADDR' = 'curl $GETIPADDR' ]
       then
           echo "no change in IP."
       else
           $GETIPADDR > $NOWIPADDR
           mail -s "IP is $GETIPADDR" [email protected]
        fi
    else
        curl $GETIPADDR >> $NOWIPADDR
    fi
    
por OmPS 10.11.2013 / 12:56

Tags