Matlab

Acceder a las IP local y pública con Matlab

Actualmente no existe en Matlab una función con la que se pueda obtener la dirección IP del ordenador con el que se está trabajando. Aunque este es un dato que se puede obtener fácilmente del sistema operativo, la dirección en la red local, o servicios web, la dirección pública con la que se accede a internet. Veamos a continuación cómo se puede conseguir la IP local y pública con Matlab.

La IP local

Una de las formas más sencillas para conseguir la IP local del ordenador es usando los comandos del sistema operativo. Siendo necesario usar comandos diferentes en UNIX (Linux y macOS) y Windows.

Obtener la IP local en la terminal de UNIX

En primer lugar, se abordará un comando para obtener esta información en los sistemas tipo UNIX. La IP local es una información que se incluye en la salida del comando ipconfig, por lo que solamente hay que buscar el dato en esta. Para ello se deben seleccionar todas las líneas que contenga la cadena "inet ", incluyendo el espacio, y eliminar la que hace regencia a la dirección 127.0.0.1. La línea que queda contendrá la dirección IP después del primer espacio. Así, mediante el uso de tuberías la información se puede obtener escribiendo

ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'

Obtener la IP local mediante en Windows

Por otro lado, en Windows esta información se puede obtener a partir del la respuesta del comando ping. Con un poco de trabajo el dato se puede obtener con el siguiente comando

for /f "tokens=2 delims=[]" %a in ('ping -n 1 -4 "%computername%"') do @echo %a

Obtener el valor de la consola en Matlab

Ahora, una vez que sabemos cómo obtener la IP en UNIX y Windows, solamente hay que llamar los comandos desde Matlab. Para ello existe la función system(). Una función a la que se le debe pasar una cadena de texto con el comando a ejecutar. Devolviendo dos variables como respuesta, la primera es el estado, generalmente 0 cuando el comando se ejecuta correctamente, y el segundo es la salida por pantalla, el valor con la respuesta. Así para obtener la IP local solamente se tiene que ejecutar en UNIX

[~, local] = system('ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk ''{print $2}''');

Mientras que si estamos en Windows

[~, local] = system('for /f "tokens=2 delims=[]" %a in (''ping -n 1 -4 "%computername%"'') do @echo %a');

Para saber si el script se está ejecutando en PC o no se puede usar la función ispc() de Matlab.

Obtener la IP pública

Para obtener la IP pública, con la que se accede a internet, la mejor opción es usar un servicio como puede ser http://checkip.amazonaws.com. Al acceder a esta página web se obtiene como respuesta la IP pública de nuestro ordenador en una cadena de texto que se puede leer. Así, usando la función webread() el dato de la IP pública se puede obtener fácilmente ejecutando el comando.

options = weboptions('ContentType', 'text');
public = webread('http://checkip.amazonaws.com', options);
public = strtrim(public);

Crear una función para obtener las IP local y pública con Matlab

Una vez que sabemos cómo obtener ambos datos, es posible crear una función que automatice la tarea y seleccione el comando adecuado en función del sistema operativo. Esto es lo que se muestra en el siguiente código.

function [local, public] = getIP()
% GETIP   IP con la que se accede a la red
%   Este comando permite obtener tanto la IP local como la pública con la
%   que se está accediendo a la red
%
%   local, public] = getIP()
%

try
    if ispc()
        [~, local] = system('for /f "tokens=2 delims=[]" %a in (''ping -n 1 -4 "%computername%"'') do @echo %a');
    else
        [~, local] = system('ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk ''{print $2}''');
    end
    
    local = strtrim(local);
catch
    local = 'unknown';
end

try 
    options = weboptions('ContentType', 'text');
    public = webread('http://checkip.amazonaws.com', options);
    public = strtrim(public);
catch 
    public = 'unknown';
end

end

Nótese que en ambos casos el código se ejecuta dentro de estructuras try. Algo necesario ya que las llamadas al sistema o a la red pueden fallar por diferentes motivos.

Conclusiones

En esta ocasión se ha visto la forma de obtener las IP local y pública con Matlab, para lo que ha sido necesario aprender a obtener esta información en la terminal del sistema.

Imagen de Kevin Morison en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 días ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

4 días ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

1 semana ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

2 semanas ago

Segmentación RFM: cómo clasificar tu cartera de clientes antes de calcular el CLV

En un artículo anterior vimos la fórmula clásica del CLV junto a sus limitaciones. Una…

3 semanas ago

This website uses cookies.