web-dev-qa-db-fra.com

script de serveur qui envoie un email à chaque changement d'IP global

Je configure un serveur Web qui n'aura pas une adresse IP globale statique. Ce sera chez mes parents et je ne serai pas en mesure d’y intégrer SSH lorsque la propriété intellectuelle globale changera. L’adresse IP globale change à chaque redémarrage du routeur, ce qui se produit une fois par mois.

J'ai besoin d'un script qui m'envoie un email chaque fois que l'IP globale change. Je peux donc mettre à jour le DNS pour que mon site Web fonctionne à nouveau.

Je ne connais rien aux scripts dans Ubuntu, mais je connais les bases de Java et de PHP.

Ordinateur: serveur Ubuntu 13.10, iMac G4 Globe.

6
Alvar

Avez-vous envisagé d'utiliser un script/outil de mise à jour DNS dynamique?

par exemple. ddclient disponible sous forme de paquet Debian/Ubuntu.

Il peut mettre à jour votre zone DNS OU pour mettre à jour votre enregistrement DNS dynamique (afin que vous puissiez entrer en ssh) et exécuter un script personnalisé pour vous envoyer un courrier électronique.

7
AnFi

Basé sur le code de cette réponse j'ai modifié et ajouté quelques options supplémentaires pour le débogage.

Je devais configurer le serveur de messagerie et utiliser crontab -e pour que celui-ci m'envoie par courrier électronique mon adresse IP actuelle. Vous devrez également rendre le fichier de script exécutable et vous assurer que votre utilisateur dispose des autorisations de lecture et d’écriture sur le dossier dans lequel vous avez placé les 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
  $GETIPADDR > $NOWIPADDR
  mail -s "Server IP" [email protected] < $NOWIPADDR
fi
4
Jeffrey Stines

Vous pouvez écrire un script simple à exécuter à partir de cron et quotidiennement à un moment donné.

Prenez l'adresse IP existante dans un fichier, puis exécutez votre boucle if pour vérifier la nouvelle adresse IP avec l'adresse IP existante. Si l'adresse IP reste identique, elle peut ignorer l'envoi de courrier. Sinon, s'il y a un changement d'IP, il devrait envoyer un courrier avec la nouvelle adresse IP.

vous pouvez exécuter le script toutes les heures, tous les jours, toutes les semaines.

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


    if [ -f $NOWIPADDR ]
    then
       if [ `cat $NOWIPADDR` = `curl $GETIPADDR` ]
       then
           echo "no change in IP."
       else
           curl $GETIPADDR > $NOWIPADDR
           mail -s "IP is $GETIPADDR" [email protected]
        fi
    else
        curl $GETIPADDR >> $NOWIPADDR
    fi
3
OmPS

J'utilise ceci pour vérifier mon adresse IP une fois par jour.

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

Si vous avez un ordinateur Linux avec une adresse IP statique quelque part, je dirais qu'il suffit de récupérer le fichier ~/myip là-bas.

Si ce n'est pas le cas, vous pouvez toujours utiliser un outil pratique en ligne de commande appelé sendEmail (à ne pas confondre avec sendmail). Cet outil facilite l'envoi d'un courrier électronique avec une commande d'une ligne. http://caspian.dotconf.net/menu/Software/SendEmail/

Vous pouvez écrire quelque chose dans ce sens:

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