<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IP change &#8211; El Cornijal de Linux</title>
	<atom:link href="https://linuxete.duckdns.org/category/ip-change/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxete.duckdns.org</link>
	<description>Un blog sobre Linux</description>
	<lastBuildDate>Wed, 28 Feb 2024 13:09:54 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Script para monitorizar cambio de IP Pública</title>
		<link>https://linuxete.duckdns.org/script-para-monitorizar-cambio-de-ip-publica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-para-monitorizar-cambio-de-ip-publica</link>
					<comments>https://linuxete.duckdns.org/script-para-monitorizar-cambio-de-ip-publica/#respond</comments>
		
		<dc:creator><![CDATA[raspberry]]></dc:creator>
		<pubDate>Wed, 28 Feb 2024 13:09:54 +0000</pubDate>
				<category><![CDATA[IP change]]></category>
		<category><![CDATA[cambio de ip]]></category>
		<category><![CDATA[ip change]]></category>
		<category><![CDATA[script ip pública]]></category>
		<guid isPermaLink="false">https://linuxete.duckdns.org/?p=1127</guid>

					<description><![CDATA[Llevo un tiempo dándole vueltas a la posibilidad de averiguar si nuestro proveedor de internet nos cambia la IP pública y de qué manera poder saber cuando se hace ese cambio. Esto es interesante para no depender de un servicio DDNS como DynDNS, No-IP etc. He visitado numerosas web y he recopilado información de todas [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-medium"><img fetchpriority="high" decoding="async" width="300" height="300" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/ipchange-300x300.png" alt="" class="wp-image-1128" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/ipchange-300x300.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/ipchange-150x150.png 150w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/ipchange.png 512w" sizes="(max-width: 300px) 100vw, 300px" /></figure>



<p>Llevo un tiempo dándole vueltas a la posibilidad de averiguar si nuestro proveedor de internet nos cambia la IP pública y de qué manera poder saber cuando se hace ese cambio. Esto es interesante para no depender de un servicio DDNS como DynDNS, No-IP etc. He visitado numerosas web y he recopilado información de todas ellas para poder hacer este tutorial.</p>



<p>Para esto utilizaré mi Raspberry Pi 4 que está siempre conectada a Internet. Como sistema operativo he usado <strong>Linux MX-23.2 Raspberry Pi OS Libretto</strong>.</p>



<p>Los trabajos a realizar son los siguientes:</p>



<ol class="wp-block-list">
<li>Crear un script, que revise si la IP cambia de valor.</li>



<li>Instalar y configurar un programa que envíe emails con nuestra cuenta.</li>



<li>Ejecutar una tarea para que esto se realice cada cierto tiempo.</li>
</ol>



<h4 class="wp-block-heading">1- Crear el Script</h4>



<p>Buscando por Internet he visto varios script interesantes. He elegido uno que encontré en la web de Victorhck, que hace esta tarea, y que modificaré para arreglar un pequeño problema que tiene. ¿y cual es ese pequeño problema que tiene? Pues resulta que, algunas veces, el servicio que nos tiene que dar la ip pública (dyndns.org) falla y no da IP, con lo que al comparar la IP anterior con la IP sin valor, recibiremos un email en blanco.<br>Con esta modificación, si el resultado es una IP nula, volverá a consultar hasta obtener una IP válida. De esta forma, solo recibiremos un email cuando realmente cambie la IP. También he cambiado la dirección de consulta de IP por la de <strong>curl ifconfig.me</strong> , ya que me parece mucho mas estable y fiable.</p>



<pre class="wp-block-code"><code>#!/bin/bash
#https://linuxete.duckdns.org
#https://chapuboot.blogspot.com
#victorhckinthefreeworld.com
#define archivo donde almacena la ip pública actual

EXT_IP_FILE="/home/<mark style="background-color:rgba(0, 0, 0, 0);color:#d10404" class="has-inline-color">usuario</mark>/ipactual"
timestamp=$( date +%T )
curDate=$( date +"%d-%m-%y" )
CURRENT_IP=""
while &#91; -z $CURRENT_IP ]; do

#Conseguir la IP pública

CURRENT_IP=$(curl ifconfig.me 2&gt; /dev/null)

#CURRENT_IP=$(curl -silent -L http://checkip.amazonaws.com|tail -n 1)

#Si existe el archivo se saca la IP que había
 
if &#91; -f $EXT_IP_FILE ]; then
   KNOWN_IP=$(cat $EXT_IP_FILE)
 else
   #Si no existe el archivo se crea y se guarda la IP pública actual
   KNOWN_IP= touch ipactual
   KNOWN_IP=$(cat $EXT_IP_FILE)
 fi
done

#Comprueba si la IP actual ha cambiado de la IP que se había guardado

if &#91; "$CURRENT_IP" != "$KNOWN_IP" ]; then
   echo $CURRENT_IP &gt; $EXT_IP_FILE
   #Si es distinta la IP se envía un correo con la IP actual
   mail -s "IP Actual $(&lt; $EXT_IP_FILE)" <mark style="background-color:rgba(0, 0, 0, 0);color:#d10404" class="has-inline-color">email_a_destinar@loquesea.com</mark> &lt; $EXT_IP_FILE
   #Se guardan las IPs en un archivo de log
   echo $curDate $timestamp "* NUEVA IP: " $(&lt; $EXT_IP_FILE) &gt;&gt; log.txt  
fi</code></pre>



<p>Esto lo copiamos y lo pegamos en un archivo de texto al que llamaremos <strong>TestIP.sh</strong> y lo guardamos en nuestra carpeta personal. Cambiaremos los datos de la línea 4 donde pondremos nuestro usuario del sistema y la línea 26 donde pondremos la dirección de email al que vamos a enviar la información.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="931" height="534" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/Seleccion_186.png" alt="" class="wp-image-1130" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/Seleccion_186.png 931w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/Seleccion_186-300x172.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/Seleccion_186-768x441.png 768w" sizes="(max-width: 931px) 100vw, 931px" /></figure>



<p><br>Ya tan solo de daremos permisos de ejecución al script y lo tendríamos funcionando.</p>



<pre class="wp-block-code"><code>chmod +x TestIP.sh</code></pre>



<h4 class="wp-block-heading">2- Instalar ssmtp y configurar la cuenta de correo.</h4>



<p><br>SSMTP es un programa que entrega correo electrónico desde un ordenador local a un servidor de correo, su uso principal es reenviar el correo electrónico automatizado (como las alertas del sistema) desde un equipo a una dirección de correo electrónico externa.</p>



<p>Para instalar ssmtp basta con escribir el siguiente comando en una terminal</p>



<pre class="wp-block-code"><code>sudo apt install ssmtp -y</code></pre>



<p>Para poder usar el comando mail de la línea 23 del script también instalaremos mailutils</p>



<pre class="wp-block-code"><code>sudo apt install mailutils -y</code></pre>



<p>También instalaremos curl</p>



<pre class="wp-block-code"><code>sudo apt install curl</code></pre>



<p>Para configurar el programa editamos su archivo ssmtp.conf</p>



<pre class="wp-block-code"><code>sudo nano /etc/ssmtp/ssmtp.conf</code></pre>



<figure class="wp-block-image size-full"><img decoding="async" width="917" height="598" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/ssmtp.png" alt="" class="wp-image-1117" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/ssmtp.png 917w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/ssmtp-300x196.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/ssmtp-768x501.png 768w" sizes="(max-width: 917px) 100vw, 917px" /></figure>



<p>Rellenamos la línea root con tu dirección&nbsp;de correo</p>



<p>root=tu_correo@gmail.com</p>



<p>Rellenamos la línea mailhub con el smtp de gmail</p>



<p>mailhub=smtp.gmail.com:587</p>



<p>Descomentamos la línea FromLineOverride</p>



<p>FromLineOverride=YES</p>



<p>Añadimos a continuación las siguientes líneas</p>



<p>AuthUser=tu_correo@gmail.com<br>AuthPass=tucontraseñasinespacios<br>UseSTARTTLS=YES</p>



<p>Yo voy a usar una cuenta Gmail, que tiene activada la verificación en dos pasos, la cual ya no tiene la opción de «acceso a aplicaciones poco seguras» (necesaria para aplicaciones de terceros), Por esta razón deberemos crear una contraseña única en el apartado «Contraseñas de Aplicaciones»</p>



<p>Para obtenerla deberás ir a la Configuración de tu cuenta, Seguridad</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="275" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/contrasena-1024x275.png" alt="" class="wp-image-1121" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/contrasena-1024x275.png 1024w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/contrasena-300x81.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/contrasena-768x207.png 768w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/contrasena.png 1331w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Se generará una contraseña de 15 dígitos que será la que usarás para configurar el apartado de AuthPass.</p>



<p>**Ojo, la contraseña se usa sin los espacios, aunque te la muestra con espacios entre dígitos, hay que pegarla sin los espacios **</p>



<p>¡¡Vamos a probarlo!!</p>



<p>Para saber si funciona tecleamos el siguiente comando en consola.</p>



<pre class="wp-block-code"><code>echo "Testing…1…2…3" | ssmtp <mark style="background-color:rgba(0, 0, 0, 0);color:#ec0202" class="has-inline-color">mi_email@gmail.com</mark></code></pre>



<p>No deberá arrojar ningún error y si vamos a nuestra bandeja de entrada, veremos que tenemos un nuevo email.</p>



<p>Para saber que está funcionando el script, en una terminal escribimos el siguiente comando.<br>./TestIP.sh</p>



<p>La primera vez que lo ejecutemos, aparentemente no hará nada, pero, si revisas tu carpeta personal, habrá creado dos archivos, uno llamado ipactual y el otro log.txt y en la bandeja de entrada de tu correo tendrás un nuevo email indicando tu IP Pública.<br>Si ejecutamos más veces el script, no ocurrirá nada, ya que nuestra IP no ha cambiado. Si tenemos una VPN y la activamos, reiniciamos o apagamos el router, al ejecutar el Script es posible que envíe un email con la nueva IP.</p>



<h4 class="wp-block-heading">3- Automatizar la tarea.</h4>



<p>Vamos a hacer que el script TestIP.sh se ejecute cada hora a través de Cron.</p>



<p>Crearemos un archivo Crontab, así que desde la terminal ejecutamos el siguiente comando:</p>



<pre class="wp-block-code"><code>crontab -e</code></pre>



<p>Dentro pegaremos la siguiente instrucción, sustituyendo «usuario» por el nombre de usuario de tu cuenta.</p>



<pre class="wp-block-code"><code>0 */1 * * * /home/<mark style="background-color:rgba(0, 0, 0, 0);color:#f81414" class="has-inline-color">usuario</mark>/TestIP.sh</code></pre>



<p>Esto quiere decir que, cada hora, el script se ejecutará y hará las comprobaciones pertinentes.</p>



<p>Eso es todo, a partir de ahora sabrás cuando cambia tu dirección IP porque estarás informado a través de tu correo electrónico.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxete.duckdns.org/script-para-monitorizar-cambio-de-ip-publica/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
