Descripción: Este script comprueba la dirección IP pública de un PC y la envia a una dirección de correo.
Es útil si tiene el PC con una conexión a internet sin IP fija y se quiere conectar a él remotamente.
Puede ejecutarlo directamente con: ./mailip.sh o añadir la siguiente linea en un script de inicio: nohup mailip.sh &>/dev/null & Para ejecutarlo, primero debe modificar las variables del principio del script con sus datos de correo.
#!/bin/bash
# mailip.sh
# Script designed to read your public IP address from www.whatismyip.org
# at intervals and notify any changes by sending an email for you.
# wget and sendEmail with tsl support must be installed on your system.
# Usage: mailip.sh (if it can be found in your session environment PATH)
# or if you want to run it on the background: nohup mailip.sh &>/dev/null &
# Please, you must modify the next variables to suit your needs:
DELIVER=an_account@gmail.com # An account to send the email with the ip.
RECEIVE=$DELIVER # An account to get the email. Don't modify to send it to the same address you especified above.
SMTP_SERVER=server.address.com:port # The smtp server's port of the emailer account. Example: smtp.gmail.com:587
MAIL_USER=account-user
MAIL_PASS=UseR.p4s5vooRd-
TLS=yes # yes|no Does the mail server accept/require TLS or SSL encryption?
# The script starts here.
PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin # paranoia
READ_IP()
{
wget -q -t 4 --no-proxy --no-cache --no-cookies -o /dev/null -O /var/publicip http://www.whatismyip.org
if [ $? -ne 0 ] ; then sleep 5m ; READ_IP ; fi
}
SEND_IP()
{
sendEmail -q -f $DELIVER -t $RECEIVE -u $SUBJECT -m $MESSAGE -s $SMTP_SERVER -xu $MAIL_USER -xp $MAIL_PASS -o tls=$TLS
if [ $? -ne 0 ] ; then sleep 5m ; SEND_IP ; fi
}
if [ $DELIVER == an_account@gmail.com ]
then echo ; echo " Warning! You must carefully edit some variables of the script first of all." ; echo
else
if [ ! -e /var/publicip-sent ]
then echo 0 > /var/publicip-sent
fi
while true
do READ_IP ; sleep 12s ; sync # paranoia
if [ `cat /var/publicip` != `cat /var/publicip-sent` ]
then
SUBJECT=`hostname ; echo "IP changed:" ; cat /var/publicip`
MESSAGE=`cat /var/publicip ; echo ; date +%F\ %T`
SEND_IP && mv /var/publicip /var/publicip-sent
else rm /var/publicip
fi
sleep 60m
done
fi
# That was all.
# Perhaps you didn't like having to type your email password directly in the script,
# a workaround could be to assign a value like MAIL_PASS=`cat ~/password.txt` , then
# write a file called ~/password.txt with only the password in it and run the script.
# Don't forget that the password plain text file should only be readable by you,
# modificate it's permissions with chmod if needed.
2 comentarios:
Hola, muy buen blog! revisa la linea 44 demaciados argumentos
./mailip.sh: line 44: [: too many arguments
Buen día, a mi me da el mismo error en la línea 44, al revisar paso a paso el script lo que ocurre es que no genera el fichero publicip
Publicar un comentario