Cómo obtener su IP pública en un script Bash de Linux
Publicado: 2022-11-12Necesitará su dirección IP externa si desea conectarse de forma remota a su computadora. Encontrarlo manualmente es fácil, pero aquí le mostramos cómo encontrarlo desde un script de Linux.
Direcciones IP internas y externas
Las direcciones de protocolo de Internet se utilizan para identificar dispositivos en una red. Son una etiqueta única en la red, asignada a un solo dispositivo. Si otro dispositivo quiere enviar datos a ese dispositivo, puede hacerlo utilizando su dirección IP.
Su módem de banda ancha tiene un enrutador de red incorporado que dirige el tráfico de red alrededor de la red de un dispositivo a otro. También es la autoridad local la que asigna direcciones IP a los dispositivos cuando se unen a la red. También mantiene una tabla de nombres de red y direcciones IP. Esto le permite dar nombres significativos a las computadoras en su red porque, para los humanos, es más fácil trabajar con nombres que con listas de números.
Los dispositivos en Internet también tienen una dirección IP. Algunos de ellos también tienen nombres, como sitios web. Los proveedores de servicios de nombres de dominio buscan nombres de dominio de sitios web y los intercambian por direcciones IP automáticamente.
Su proveedor de servicios de Internet (ISP) le proporciona a su módem de banda ancha su propia dirección IP externa o de acceso a Internet. Independientemente de la cantidad de dispositivos que pueda tener en su hogar que estén conectados a Internet, todo su tráfico combinado sale a través de esa única dirección IP.
Si está fuera de la ciudad y desea conectarse a un servicio que tiene en ejecución en una de las computadoras de su hogar, deberá usar su dirección IP externa para hacerlo. Su enrutador deberá configurarse para enrutar su solicitud de conexión al dispositivo apropiado dentro de su hogar, por supuesto.
A menos que pague un poco más a su ISP cada mes por una dirección IP estática , su dirección IP externa puede cambiar de vez en cuando. Reiniciar su módem de banda ancha bien podría resultar en que obtenga una dirección IP externa diferente. Entonces, si necesita saber su dirección IP externa, no puede simplemente verificarla una vez y almacenarla. Deberá determinar periódicamente de qué se trata.
Encontrar su dirección IP externa
Descubrir su dirección IP externa significa hablar con algo que está fuera de su red. En otras palabras, acceder a algo en Internet que nos puede dar la información que queremos. Necesitamos asomarnos al vacío y ver qué nos devuelve la mirada. Y luego pídele nuestra dirección externa.
Hay dos maneras en que podemos hacer esto. Una forma implica sitios web. Hay muchos sitios web que le mostrarán cuál es su dirección IP externa y también mucha otra información. Puede acceder a estos en su navegador o usar una herramienta de línea de comandos como curl
que puede realizar solicitudes HTTPS.
La otra forma es usar un comando dedicado como dig
. El comando dig
interroga a los servidores DNS para recuperar información.
Usando un navegador
Por supuesto, usar un navegador no es una forma fácil de usar para obtener su dirección IP externa. Pero mirar un sitio web que ofrece ese servicio puede brindarnos información útil. Solíamos recomendar ip4.me pero el sitio no se ha actualizado a HTTPS. Todavía usa el HTTP antiguo e inseguro. El sitio aún funciona, pero ahora hay mejores alternativas.
El sitio ifconfig.me proporciona un buen conjunto de información.
Esto informa nuestra IP externa como 178.238.11.140. Al desplazarse hacia abajo por la página web, encontrará una lista de comandos que puede usar para recuperar información del sitio.
Todos los ejemplos que dan usan curl
para interrogar al sitio. Así que echemos un vistazo al uso de curl
.
Usando rizo
En nuestras máquinas de prueba, Fedora 37 ya tenía curl
instalado. Necesitábamos instalarlo en nuestras computadoras Ubuntu y Manjaro.
Para instalarlo en Ubuntu escribe:
sudo apt instalar rizo
El comando en Manjaro es:
sudo pacman-S curl
Podemos probar esto con el primer comando que aparece en la página web ifconfig.me
.
curl ifconfig.me
Nuestra dirección IP externa se recupera y se muestra en la ventana del terminal. La salida es básica. Ni siquiera hay un carácter de nueva línea impreso después de la cadena. El símbolo del sistema está pegado a la dirección IP.
Este comando funciona porque devolver la dirección IP es la acción predeterminada del sitio web. Si la acción predeterminada alguna vez cambia, es posible que obtengamos un resultado diferente. Para atender esto, podemos especificar que estamos solicitando nuestra dirección IP agregando el identificador "ip" a la URL.
curl ifconfig.me/ip
Esto devuelve la dirección IP como antes.
Esto ilustra el problema de usar un sitio web como fuente de su dirección IP. Los sitios web pueden cerrarse o pueden cambiar la forma en que operan, o el formato de la información devuelta. Estos cambios harán que los scripts que dependen de estos sitios fallen o se comporten de manera impredecible.
El uso de un recurso confiable y de buena reputación como un servidor DNS es una forma más sólida de obtener su IP externa. Para consultar un servidor DNS necesitamos usar el comando dig.
RELACIONADO: ¿Qué es DNS y debo usar otro servidor DNS?
Usando el comando de excavación
Esta vez, dig
se instaló en Fedora y Ubuntu, y solo tuvimos que instalarlo en Manjaro.
El comando es el comando habitual de pacman
, por lo que no hay sorpresas, pero el nombre del paquete no es lo que cabría esperar.
sudo pacman -S herramientas de enlace
Para usar dig
para descubrir nuestra dirección IP externa, debemos apuntarla a un servidor DNS. Estamos utilizando el servidor OpenDNS, proporcionado por Cisco.
Necesitamos especificar el nombre del servidor DNS que queremos usar, precedido por un signo de arroba "@". También necesitamos nombrar el tipo de registro que deseamos recuperar. En este caso es “myip”. La opción +short
garantiza que obtengamos una respuesta concisa y no detallada.
cavar @resolver1.opendns.com myip.opendns.com +corto
Esta vez, nuestra dirección IP tiene un carácter de nueva línea impreso después. Como veremos, esto se imprime después de la cadena de dirección IP, no es una parte integral de la cadena en sí.
RELACIONADO: Cómo usar el comando dig en Linux
Uso de estos en un script
Hay muchas razones por las que es posible que desee conocer su dirección IP externa desde el interior de un script. Tal vez tenga un script que monitorea si su dirección IP externa ha cambiado y le notifica cuando eso ocurre. O quizás un servidor notifica a sus clientes cuando cambia su dirección. Sean cuales sean sus motivos, podemos implementar los comandos que hemos usado en la línea de comandos dentro de un script con bastante facilidad.
Para recuperar nuestra dirección IP externa y asignarla a una variable, solo necesitamos envolver el comando dentro de una sustitución de comando, $(...)
, y asignarlo a una variable, así:
variable=$(...)
El comando entre paréntesis se ejecuta y el valor devuelto se sustituye por la expresión. En este ejemplo, el comando se simplifica a "variable = valor devuelto".
RELACIONADO: Cómo trabajar con variables en Bash
Aquí está en un guión. Agregamos la opción -s
(silencio) al comando curl
para evitar que informe el progreso de la recuperación de datos.
#!/bin/bash extaddr=$(curl -s ifconfig.me) echo "La dirección IP externa es $extaddr (de cURL)"
Copie este script en un editor, guárdelo como "getex1.sh" y hágalo ejecutable con el comando chmod
.
chmod +x getex1.sh
Ejecutemos el script y veamos qué obtenemos.
./getex1.sh
Para hacer lo mismo con la opción más robusta de usar un servidor DNS en lugar de un sitio web, todo lo que tenemos que hacer es sustituir el comando curl
con el comando dig
.
#!/bin/bash extaddr=$(dig @resolver1.opendns.com myip.opendns.com +corto) echo "La dirección IP externa es $extaddr (de dig)"
Guarde esto como script "getex2.sh" y hágalo ejecutable con chmod
.
chmod +x getex2.sh
Ejecutemos este script.
./getex2.sh
Podemos ver en la salida de los dos scripts que, a pesar de que el comando dig
imprime un carácter de nueva línea en la línea de comando, en el script no se agrega una nueva línea a la variable extaddr
.
Ir por la confiabilidad
Siempre es más seguro usar un servicio reconocido que tenga buena reputación y tenga un formato de salida predecible que usar un sitio web "no oficial". Como todo lo demás en Internet, fíjate bien de quién obtienes la información.'
RELACIONADO: Cómo permitir que los scripts de Linux detecten que se están ejecutando en máquinas virtuales