Conocer tu ip externa desde línea de comandos en Linux con wget

Hace tiempo habíamos visto por aquí cómo conocer nuestra IP externa desde línea de comandos en Linux con cURL. Pero hay más métodos. Veamos hoy cómo hacerlo con wget, de nuevo recurriendo a la web ifconfig.me para ello (como en ejemplo de cURL):

wget -qO - ifconfig.me/ip

El API de ifconfig.me además nos permite conocer otras cosas como nuestro user agent, el puerto por el que conectamos, el idioma predefinido con el que navegamos… en la página principal podéis ver, debajo de vuestros datos, todos los comandos disponibles.

Anuncios

Cinco consejos a la hora de hacer scripts de Bash en Linux.

Llevamos unos días donde he hablado mucho de PowerShell y parece que nos estemos olvidando un poco del mundo Linuxero, así que hoy vamos a ver una serie de consejillos para hacer scripts con Bash en nuestro sistema Linux de forma más efectiva:

Usa comillas dobles a la hora de referenciar variables:

Trabajar con cadenas de texto con espacios puede ser problemático. A la hora de referenciar una variable para usar su valor es recomendable hacerlo poniéndola entre comillas dobles: evitará que la cadena se corte por el uso de espacios en blanco y también mejorará el rendimiento, evitando hacer rastreos de comodines innecesariamente. Si ejecutas este script lo verás:

empresas="Tecnológicas Camarasa SL"
echo "Sin comillas:"
echo
for nombre in $empresas; do
        echo "$nombre"
done
echo
echo "Con comillas:"
echo
for nombre in "$empresas"; do
        echo "$nombre"
done
exit 0

Si lo ejecutas verás como en el primer caso va a imprimir tres nombres, pues se confundirá con los espacios, mientras que en el ejemplo con comillas lo sacará en una sola línea respentado los espacios.

Forzar la salida del script en caso de error:

A veces un script puede seguir ejecutándose aunque un comando falle, y eso puede derivar en problemas más adelante. Con la siguiente línea podemos forzar la salida del script en caso de que un comando no funcione:

set -o errexit 

Forzar la salida del script en caso de usar una variable no declarada:

Como en el caso anterior, esto puede derivar en errores más graves más adelante, así que es recomendable que el script se detenga si se usa una variable que está sin declarar:

set -o nounset

Declara las constantes como readonly:

Las constantes en esencia son un variable con un valor estático. A la hora de declarar una constante en nuestro script, tanto por seguridad como por rendimiento, lo mejor es hacerlo con el atributo readonly, puesto que no va a vaciarse ni sobrescribirse el valor.

readonly fichero_host="/etc/hosts"
readonly pi=3.14159265359

Usa la sintaxis $(comando) en lugar del antiguo `comando` :

Si queremos asignar la salida de un comando a una variable antiguamente lo haríamos invocando al comando entre dos acentos. Hoy por hoy la sintaxis sería utilizando el comando entre paréntesis precedido por el carácter $, tal que así:

#Sintaxis antigua
usuario=`echo “$UID”`
#Sintaxis modernizada recomendada
usuario=$(echo “$UID”)

Virtual Box: Compartir una carpeta de un anfitrión Windows en una máquina con Ubuntu.

El primer paso para este tutorial nos remite a una entrada antigua: hay que instalar las Guest Additions de Virtual Box para comenzar. Es un paso indispensable, pues sin las Guest Additions no va a funcionar.

Ok, ya tenemos nuestro sistema operativo Ubuntu (o familia) instalado en una máquina virtual de Virtual Box y con las Guest Additions instaladas. Ahora tenemos que irnos a Configuración, allí a Carpetas Compartidas y allí elegimos la carpeta a compartir y le asignamos un nombre (para el ejemplo le he puesto vbox).

Tras esto nos vamos a nuestro Ubuntu y abrimos un terminal de línea de comandos. Lo primero que haremos será crear un punto de montaje para nuestra carpeta. En el ejemplo le llamaremos “carpeta“:

sudo mkdir /media/carpeta

Y lo siguiente es ejecutar el montaje de la carpeta. En mi caso la carpeta en Windows se llama vbox y el punto de montaje carpeta, en el vuestro poned los que correspondan:

sudo mount -t vboxsf vbox /media/carpeta

Si queréis que la carpeta se monte siempre al arrancar el sistema el truco es editar el fichero /etc/init.d/rc.local y añadir a él la línea que usamos para montar la carpeta.

Utilizar el comando expr para hacer operaciones

El comando expr del terminal de Linux nos permite evaluar una expresión y pintar su resultado. De esta forma podemos usarlo para ejecutar operaciones aritméticas o de comparación.

$ expr 15 + 3
$ expr 15 % 3
$ expr 15 \* 3
$ expr 15 – 3
$ expr 15 / 3

En el ejemplo de arriba puedes ver los ejemplos para suma, operación de módulo, multiplicación (ese caso requiere usar el carácter \ para escapar el asterisco que usamos como símbolo de multiplicación), resta y división.

¿Limitaciones? Pues que solo nos permite operar con números enteros: únicamente acepta enteros como parámetros y tan solo devuelve enteros como resultado

Otra cosa que nos permite expr es ejecutar operaciones de comparación:

$ expr 15 = 3
$ expr 15 != 5
$ expr 15 \> 3
$ expr 15 \< 3
$ expr 15 \<= 3

Devolverá 1 en caso de que la comparación sea verdadera y 0 en el caso contrario. De nuevo el carácter \ será necesario para escapar los caracteres de mayor y menor en las comparaciones.

No solo podemos usarlo desde el terminal para operar, expr también puede resultar de utilidad invocado dentro de alguno de nuestros scripts.

Activar Windows Subsystem for Linux en Windows 10 e instalar una distribución de Linux

Ya en su día hablamos aquí sobre cómo activar el bash de Ubuntu en Windows10. Vamos a actualizar y ampliar un poco esto viendo cómo activar el Windows Subsystem for Linux en Windows y cómo instalar después una distribución de Linux:

El primer paso es activar en nuestro Windows 10 la característica del subsistema para Linux. Para eso tenemos que abrir el PowerShell y ejecutar el siguiente comando:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Tras esto toca reiniciar para completar la activacion. Una vez realizado tenemos dos opciones para instalar nuestra distribución. La primera y más cómoda, para las versiones más actualizadas de Windows 10, es hacerlo directamente desde el Windows Store, la tienda de aplicaciones de Microsoft. Están disponibles Ubuntu, OpenSuse, KaliLinux, Debian y la versión Enterprise de Suse para servidores.

La otra opción es descargar e instalar manualmente. Podéis buscar el paquete appx y descargarlo desde el navegador o podéis serviros de cURL para hacerlo desde el PowerShell con el siguiente comando:

curl.exe -L -o ubuntu-1804.appx https://aka.ms/wsl-ubuntu-1804

En el ejemplo descargaríamos la versión 18.04 de Ubuntu. Tendrías que cambiar la version por la que corresponda.

Una vez descargado tendríamos que desempaquetar e instalar. Desde PowerShell sería así, poniendo las rutas y el nombre de fichero que corresponda:

Expand-Archive ~/Ubuntu.appx ~/Ubuntu

Una vez abierto buscamos el archivo .exe de nuestra distribución, en este caso sería Ubuntu.exe y lo ejecutamos.

Por comodidad se recomienda añadir ese fichero ejecutable al path de Windows, de esta forma podrás invocarlo desde cualquier parte sin tener que escribir toda la ruta.

Un último apunte importante: la distribución de Linux debe estar almacenada en el mismo disco duro donde está instalado el sistema operativo. En caso contrario mostrará un error en la ejecución.

Crontab Generator: Generador web de tareas programas para Linux

Si eres de los que ve muy práctico el disponer de un programador de tareas pero no te acabas de sentir cómodo o no acabas de entender cómo se escribe un comando para que cron programe una tarea tienes la suerte de tener un buen montón de herramientas on-line para generar tareas programas en Linux.

Crontab Generator es una de ella, una web donde de forma muy simple elegimos la periodicidad de una tarea, insertamos la ruta del script que la ejecuta y él nos genera el comando. Por ejemplo, supongamos que queremos ejecutar un script que se llama backup.sh,situado en la carpeta home, todos los días de lunes a viernes a las 3 de la madrugada. El comando sería el siguiente:

* 3 * * 1-5 /home/backup.sh

Pero con Crontab Generator tienes un panel donde puedes seleccionar gráficamente estos parámetros:

crontab generator

Probando Bat en Ubuntu: una versión “vitaminada” de Cat

Hoy vamos a hablar de Bat, un clon “vitaminado” del comando Cat de Linux.

¿Por qué usar Bat teniendo ya Cat?

Pues porque, como ya he dicho arriba, se trata de un clon “vitaminado¿Qué quiere decir esto? Que aunque funciona igual presenta una serie de añadidos que lo hacen más atractivo o funcional:

  • Tiene resaltado de sintaxis para varios lenguajes de programación.
  • Puedes elegir varios temas de colores para dicho resaltado.
  • Incluye integración con Git para ver los cambios en el fichero.
  • Hace el paginado de forma automática.
  • Permite añadir nuevos temas y sintaxis para otros lenguajes no incluidos.

Aquí puedes ver una captura de cómo va lo del resaltado de sintaxis:

Bat sintaxis

Y aquí podéis ver parte de la lista de temas disponibles:

Listado de temas

Para elegir el lenguaje de programación que queremos resaltar basta con invocar el comando seguido de la opción -l y el nombre del lenguaje:

bat -l Python ejemploPython.py

También tenemos la opción de elegir que en lugar de mostrarnos todo el fichero nos muestre solo un rango de líneas:

bat –line-range 5:53 bin/scripts/isaiah/stryper.sh

¿Cómo instalo Bat?

El código está disponible en GitHub, así que tienes la opción de descargarlo desde la página del proyecto. También puedes ejecutar el comando wget desde la consola en Ubuntu:

wget https://github.com/sharkdp/bat/releases/download/v0.8.0/bat_0.8.0_amd64.deb

sudo dpkg -i bat_0.8.0_amd64.deb

O descargarlo desde los repositorios oficiales en Arch-Linux.

sudo pacman -S bat