jueves, 2 de mayo de 2019

Comando yes

Como continuación de la entrada anterior, donde se vio el comando seq, hoy vamos a ver otro comando “curioso”. El comando yes.
El comando yes imprime por la salida estándar el caracter “y“ de forma infinita y en líneas individuales. Hay que pulsar Ctrl+c para detenerlo:
$ yes
y
y
y
^C
Sin embargo, se puede especificar como argumento cualquier texto para que lo repita de forma indefinida:
$ yes "Hola mundo!"
Hola mundo!
Hola mundo!
Hola mundo!
^C
Un caso práctico para usar este comando es el pasar un texto a una aplicación o script que esperará una entrada por teclado. Veamos un ejemplo:
# yes | apt dist-upgrade
De esta forma, cuando apt solicite confirmar la descarga e instalación de paquetes recibirá el caracter “y“ y continuará el proceso. Aunque el comando apt tiene opciones para forzar la contestación de preguntas, nos sirve para mostrar la utilidad del comando. Quizá tengamos scripts que esperan algún otro texto, con lo que el comando yes serviría.

lunes, 29 de abril de 2019

Comando seq

En cualquier distribución de Linux hay una cantidad ingente de comandos y aplicaciones instaladas y listas para ser usadas. Basta con escribir una letra y pulsar Tabulador para ver todas las opciones existentes.
Hoy mostraré uno de estos comandos que no son conocidos por lo general. Hablamos del comando seq.

viernes, 26 de abril de 2019

Habilitar confirmación ante borrado de ficheros

En un sistema Linux, es una práctica recomendable tener activada la confirmación ante el borrado de ficheros. De esta forma, evitaremos eliminar por error información útil pues en el terminal no hay “papelera de reciclaje”.
Los pasos para activar la confirmación para el comando rm en todos los usuarios es la siguiente para Ubuntu:

lunes, 22 de abril de 2019

Afinando la búsqueda con grep

El comando grep es ampliamente usado cuando se tiene que buscar textos dentro de ficheros. Sin embargo, vamos a comentar algunos parámetros no muy conocidos y que será de ayuda a la hora de mostrar el resultado por pantalla.
No distinguir entre mayúsculas y minúsculas
El modo de búsqueda por defecto es case sensitive, es decir, distingue entre mayúsculas y minúsculas. Si no conocemos con exactitud si el texto que buscamos tiene algún caracter en mayúsculas (o minúsculas), será mejor usar el parámetro -i:
$ grep -i -r ENS32 *
netplan/01-netcfg.yaml:    ens32:
Se ha obviado explicar la opción -r, de búsqueda recursiva, por ser de uso común.
Mostrar el número de línea
Puede resultar útil conocer el número de línea donde aparece el texto buscado. De esta forma, podremos ir con más precisión a la línea en cuestión para editarla si fuera el caso. Para ello, se usará el parámetro -n:
$ grep -i -r -n ENS32 *
netplan/01-netcfg.yaml:7:    ens32:
Mostrar solamente el nombre de los ficheros
Si no se desea visualizar por pantalla la línea de texto que encaja con el patrón de búsqueda, usaremos la opción -l:
$ grep -r -l ens32 *
netplan/01-netcfg.yaml

sábado, 20 de abril de 2019

Consultar ciclo de vida en Ubuntu

A la hora de mantener actualizado un sistema operativo, en nuestro caso Ubuntu, es importante conocer hasta qué fecha se sigue dando soporte de actualizaciones para la versión que tengamos instalada.
Si nos quedamos sin soporte, será imposible actualizar un paquete del que se haya detectado una vulnerabilidad, corregir bugs, etc.
Ubuntu informa de su ciclo de vida en esta web. Se recomienda acceder a ella para conocer en todo momento el tiempo de soporte de las distintas versiones. El ciclo de vida de las últimas distribuciones es el siguiente:

lunes, 15 de abril de 2019

Conocer a qué velocidad funciona la tarjeta de red

En Ubuntu es posible conocer a qué velocidad funciona nuestra tarjeta de red. Hay que indicar que una cosa es la velocidad a la que puede funcionar una tarjeta y otra a qué velocidad trabaja en un momento determinado. Esto vendrá impuesto por el tipo de cableado de red que se use, por la velocidad negociada con el otro extremo, etc.
Por ejemplo, podemos tener una tarjeta Gigabit Ethernet (es decir, capaz de trabajar a 1 Gbps) pero conectarla a un switch que trabaje a 100 Mbps. En este caso, se negociará una velocidad de 100 Mbps.
Vamos a ver cómo comprobar la velocidad máxima a la que puede trabajar nuestra tarjeta de red y la velocidad a la que está trabajando con la conexión actual.

jueves, 11 de abril de 2019

Averiguar los nombres de las interfaces de red en Ubuntu

En esta entrada se va a ver cómo averiguar el nombre de las tarjetas de red instaladas en un equipo con Ubuntu 18.04 (aunque también es aplicable a versiones anteriores).
Veamos un caso práctico: se tiene una máquina virtual con Ubuntu Server 18.04. Esta máquina tiene una tarjeta de red asociada. Se puede ver de la siguiente forma:
$ sudo ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.139  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe3b:740  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:3b:07:40  txqueuelen 1000  (Ethernet)
        RX packets 151358  bytes 228391106 (228.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12188  bytes 1009977 (1.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 228  bytes 17347 (17.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 228  bytes 17347 (17.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
O de esta otra:

lunes, 8 de abril de 2019

Significado de primera línea de ls -l

El comando ls suele ejecutarse habitualmente seguido de la opción -l (entre otras). A parte de ver por pantalla la información que esperamos, siempre aparece una primera línea con el siguiente aspecto:
$ ls -l
total 12
-rw-r--r-- 1 root root 12287 abr  8 20:45 a
Aunque se suele pasar por alto esta primera línea, conviene saber qué significa toda información que nos muestre el sistema, y más en un comando tan usado como es ls -l.
La explicación que se encuentra en la documentación oficial del comando es la siguiente:

jueves, 4 de abril de 2019

Variables bash #3

En una entrada anterior, Variables bash #2, se vio cómo utilizar los parámetros que se pasan a un script en bash. En esta ocasión se va a mostrar una variable de bash llamada LINENO.
La variable $LINENO contiene el número de línea que se está ejecutando en cada momento en un script bash. Por tanto, si tenemos el siguiente código:
#!/usr/bin/env bash

echo "Primera linea"
echo $LINENO
echo "Segunda linea"
y se ejecuta, obtendremos el siguiente resultado:
$ ./prueba.sh
Primera linea
4
Segunda linea
Hay que destacar que se consideran las líneas vacías (en blanco) en la contabilidad de la línea en ejecución. En el caso mostrado, echo $LINENO está efectivamente en la línea número 4.
El uso de esta variable es útil para acotar errores en la ejecución de un script. Se pueden cambiar las líneas del tipo echo “Pasa por aquí” por un echo $LINENO. Además, se puede combinar con la activación de numeración de líneas en Vim para depurar de forma más rápida nuestro script.

lunes, 1 de abril de 2019

Aprendiendo Vim #6

Como continuación a la última entrada referente a Vim, Aprendiendo Vim #5, en esta ocasión se va a explicar cómo activar la numeración de líneas. Esta opción suele ser útil cuando se edita código, entre otras muchas situaciones.
Vamos a mencionar dos formas de activarlo: manualmente o que sea la opción por defecto.

Activación manual

Estando dentro de Vim, accederemos al modo línea de comandos con los dos puntos y escribiremos lo siguiente:
:set number
De esta forma, todas las líneas del fichero en edición quedarán numeradas.
Para desactivar la numeración, bastará con acceder de nuevo al modo línea de comandos y escribir:
:set nonumber
Si teniendo las líneas numeradas se sale de Vim, al volver a entrar todo quedará según se indique en la configuración por defecto. Y, por defecto, en Vim las líneas no aparecen numeradas.

Configuración por defecto

Si deseamos que las líneas siempre aparezcan numeradas, habrá que especificarlo en el fichero de Vim donde se almacena la configuración por defecto del usuario. Este fichero es ~/.vimrc.
Editar este fichero, o crearlo si no existe, y añadir la siguiente linea:
set number
En adelante, cada vez que abramos Vim las líneas aparecerán numeradas.

Entradas anteriores de Aprendiendo Vim

sábado, 30 de marzo de 2019

Huevo de pascua en APT

En el terminal de Ubuntu (o derivado de Debian), escribir el siguiente comando:
$ apt moo
O si no se dispone de apt:
$ apt-get moo
Obteniendo el siguiente huevo de pascua:
$ apt moo
                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...
Moo

jueves, 28 de marzo de 2019

Descargar actualizaciones con APT sin instalarlas

El gestor de paquetes de Ubuntu es apt. Se trata de un estupendo sistema de gestión que permite de forma cómoda y rápida buscar, instalar o eliminar paquetes.
Habitualmente, a la hora de actualizar paquetes se ejecutarán los siguientes comandos:
$ sudo apt update
$ sudo apt dist-upgrade
La primera línea, apt update, analizará los repositorios para saber, entre otras cosas, qué paquetes instalados en nuestro equipo tienen una nueva versión pendiente de instalar.
La segunda, apt dist-upgrade, instalará estas actualizaciones.
Hasta aquí ninguna novedad.
No obstante, en ocasiones puede ocurrir que la descarga de los nuevos paquetes a actualizar (realizada por el comando apt dist-upgrade) va muy lenta y el proceso de actualización se dilata demasiado, entre la descarga y posterior instalación. Puede ocurrir que tengamos una ventana de tiempo reducida para realizar la actualización de paquetería.
Para estos casos, se recomienda realizar una descarga previa de estos nuevos paquetes. De esta forma, cuando emprendamos el proceso de actualización de paquetería solamente se instalarán, no perdiendo tiempo en descargarlos. Para ello, ejecutar los siguientes comandos:
$ sudo apt update
$ sudo apt dist-upgrade -d
[...]
Des:102 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 cloud-init all 18.5-45-g3554ffe8-0ubuntu1~18.04.1 [390 kB]
Descargados 159 MB en 15s (10,5 MB/s)
Descarga completa y en modo de solo descarga
Los paquetes se descargan en el directorio /var/cache/apt/archives. Como ya se vio en una entrada anterior, se puede eliminar esta caché de paquetes para liberar espacio en disco.

La instalación de estos paquetes previamente descargados se realizará con el comando habitual:

$ sudo apt dist-upgrade

lunes, 25 de marzo de 2019

Aprendiendo Vim #5

Sustitución de texto en Vim

Como continuación a la última entrada referente a Vim, Aprendiendo Vim #4, en esta entrada se va a profundizar en la sustitución de texto en Vim.
Vim permite realizar sustituciones de texto de forma automatizada, en vez de ir buscando palabra por palabra y hacer las mismas a mano.
Vamos a comenzar viendo un ejemplo práctico y explicando a continuación los detalles.

jueves, 21 de marzo de 2019

Significado de segunda columna de comando ls

Un comando ampliamente utilizado en un sistema Linux es ls con el parámetro -l, que ofrece información adicional por cada fichero. Veamos un ejemplo:
$ ls -l
total 12
-rwxr-xr-x 1 root root 4017 mar 20 09:49 specs.sh
drwx------ 3 root root 4096 mar 18 10:29 systemd-private-ac
drwx------ 2 root root 4096 ago  7  2018 vmware-root
Sin embargo, no es habitual conocer el significado de la segunda columna, ese valor numérico que tiene cada fichero o directorio listado.
Este valor indica el número de enlaces duros que tiene el fichero o directorio. Recordar que un fichero cualquiera mantiene sus datos almacenados en el disco duro, y dispone de una estructura de inodos para indicar qué bloques son los que tienen sus datos. Un enlace duro es un fichero que usa el mismo inodo que el fichero original. Veamos un ejemplo:

lunes, 18 de marzo de 2019

Liberar espacio de disco eliminando caché de paquetes

Cuando nos encontramos ante un equipo con poco espacio libre en disco, hace falta ejecutar una serie de acciones para liberar espacio.
Una de ellas es liberar espacio reservado para root. Con esta acción conseguiremos ganar bastante si la partición es grande.
Otra acción encaminada a ganar espacio libre consiste en liberar espacio en disco eliminando paquetes innecesarios. Se puede llegar a liberar 1 GB o incluso más.
En esta ocasión se va a exponer un tercer método para liberar espacio en disco: eliminar la caché de paquetes .deb, que se almacena en el equipo tras la instalación de paquetes por si en el futuro hay que volver a [re]instalarlos. Esto, por supuesto, solo es aplicable para sistemas basados en paquetería mediante APT. Como Debian o Ubuntu.
Para ello, ejecutaremos:
$ sudo apt clean
O si nuestra versión de sistema operativo es más antigua:
$ sudo apt-get clean
Este comando no ofrece ninguna salida por pantalla pero elimina la caché de paquetes ubicada en el directorio /var/cache/apt. De hecho, podemos ejecutar una simulación del comando que indicará los pasos que realiza:
$ sudo apt-get -s clean
Del /var/cache/apt/archives/* /var/cache/apt/archives/partial/*
Del /var/lib/apt/lists/partial/*
Del /var/cache/apt/pkgcache.bin /var/cache/apt/srcpkgcache.bin

jueves, 14 de marzo de 2019

Aprendiendo Vim #4

Como continuación a la última entrada referente a Vim, Aprendiendo Vim #3, en esta ocasión se explicará cómo buscar texto en Vim.
Para ello, partiremos del modo normal que es en el que nos encontramos al abrir un fichero con Vim. Estando en este modo, escribiremos lo siguiente:
/palabra
Siendo palabra lo que se desea buscar. Al pulsar Enter, se iniciará la búsqueda desde la posición actual del cursor. Finalmente, el cursor se posicionará al inicio de la primera palabra que se encuentre.
Algo habitual es buscar repeticiones de la misma palabra. Bastará con pulsar n en el modo normal y se repetirá la búsqueda de nuevo, buscando hacia adelante. Si por el contrario se desea realizar la búsqueda de la palabra hacia atrás, pulsaremos N.
Entradas anteriores de Aprendiendo Vim

lunes, 11 de marzo de 2019

Conocer el nombre del kernel en uso

Los sistemas operativos de tipo Unix-like suelen disponer de mecanismos para averiguar qué kernel es el que está en uso. Esto es útil para, por ejemplo, restringir el uso de un script a un tipo de kernel en concreto.
El siguiente comando servirá para detectar el tipo de kernel en uso, y está diponible en la amplia mayoría de sistemas Unix-like:
$ uname -s
Linux
Para el caso de FreeBSD:
$ uname -s
FreeBSD
Y para el caso de MacOS:
$ uname -s
Darwin
Y un ejemplo de uso prodría ser el siguiente:
#!/usr/bin/env bash

if [ `uname -s` = "Darwin" ]; then
  echo "Continuar con el script en este Mac"
fi

jueves, 7 de marzo de 2019

Invertir cadena de texto con Python

Python dispone de mecanismos internos para invertir una cadena de texto. Es decir, se invierte el orden de los caracteres tal que se imprime primero el último, después el penúltimo y así hasta el primero.
Siendo cadena un String:
cadena = 'Me gusta mucho el blog www.administracion-linux.com'
La forma para invertir la cadena de texto es la siguiente:
cadena[::-1]
'moc.xunil-noicartsinimda.www golb le ohcum atsug eM'
Si lo que se desea en realidad es invertir el texto de cada palabra, pero que estas se impriman en su orden natural (palabra1 palabra2 … palabraN), se puede realizar lo siguiente:
for item in cadena.split(' '):
  print item[::-1],
Obteniendo como resultado:
eM atsug ohcum le golb moc.xunil-noicartsinimda.www

lunes, 4 de marzo de 2019

Cambiar servidor de hora en Ubuntu 18.04

En una entrada anterior se explicó cómo establecer el timezone en Ubuntu 18.04. Una personalización relacionada con el timezone es la de cambiar el servidor NTP a partir del cual nos sincronizamos.
En Ubuntu 18.04, el encargado de gestionar la sincronización horaria es el demonio systemd-timesyncd. Por defecto, este demonio sincroniza la hora del sistema mediante los servidores de hora de Ubuntu (golem.ubuntu.com). Si lanzamos un tcpdump y esperamos un poco, veremos tráfico de red por el puerto 123 UDP, que es el relacionado con el protocolo NTP:
$ sudo tcpdump port 123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes
21:32:36.048941 IP us18.home.44687 > golem.canonical.com.ntp: NTPv4, Client, length 48
21:32:36.093463 IP golem.canonical.com.ntp > us18.home.44687: NTPv4, Server, length 48

jueves, 28 de febrero de 2019

Volver al directorio anterior

Aquí va un tip rápido y útil relacionado con el desplazamiento entre directorios en la línea de comandos de Linux.
Para ir al directorio anterior en el que nos encontrábamos, basta con usar el siguiente comando:
$ cd -
A continuación se muestra un ejemplo:
user@srv:/usr/local$ cd /tmp
user@srv:/tmp$ cd -
/usr/local
user@srv:/usr/local$ cd -
/tmp
user@srv:/tmp$

lunes, 25 de febrero de 2019

Redirección de salida estándar y de error

En el terminal de Linux, las aplicaciones disponen de dos salidas por defecto por las que sacar texto: la salida estándar (stdout) y la salida estándar de error (stderr).
Por defecto, ambas salidas son redireccionadas al terminal, por lo que si escribimos el siguiente comando:
$ ls + a.sh
ls: cannot access '+': No such file or directory
a.sh
Por un lado obtendremos la primera línea, que salió por stderr, y por otro la segunda línea que salió por stdout al no tratarse de ningún error.

jueves, 21 de febrero de 2019

Obtener la temperatura de una ciudad

Hoy vamos a ver una forma rápida para obtener la temperatura que hay en una ciudad mediante un script. Para ello vamos a basarnos en la web https://www.eltiempo.es, pero este método es extensible a cualquier otra web.
Para ello, accederemos mediante un navegador web e iremos a la página del tiempo en la ciudad deseada, por ejemplo Murcia: https://www.eltiempo.es/murcia.html
El siguiente paso será hacer esto mismo que hemos realizado con un navegador, pero esta vez mediante un script para quedarnos con el valor que nos interesa: la temperatura.

lunes, 18 de febrero de 2019

Aprendiendo Vim #3

Como continuación de la entrada anterior sobre vim, Aprendiendo Vim #2, hoy vamos a ver cómo trabajar con el portapapeles.

Copiar líneas

Para copiar la línea sobre la que estamos, bastará con teclear yy estando en el modo normal. Si se desea copiar varias líneas a partir de la actual hacia abajo, bastará con anteponer el número de líneas a la yy. Por ejemplo, para copiar 5 líneas se pondrá 5yy.

jueves, 14 de febrero de 2019

Fichero pg_hba.conf de Postgresql

Como continuación del post sobre primeros pasos con Postgresql, hoy vamos a ver un poco más en profundidad el fichero pg_hba.conf que se suele ubicar en el directorio /etc/postgresql/XX/main/ (siendo XX el número de versión, por ejemplo 10 ó 9.3).
El fichero pg_hba.conf sirve para especificar los accesos a las bases de datos que permitiremos, es decir, sirve de ACL.
Si se edita el fichero, se comprobará que cada linea (no comentada) consta de una serie de campos separados por un espacio o un tabulador. El significado de los distintos campos es el siguiente:
Columna 1: TYPE
Puede tener el valor local o host.
Si utilizamos local, indicaremos que el acceso que estamos definiendo tendrá como origen el propio equipo donde está instalado el servicio Postgresql y accederemos al localhost.
Si usamos host, indicaremos que el acceso provendrá de un equipo en red, es decir, el que inicie el acceso no será la máquina donde se tenga instalado el servicio Postgresql y por tanto accederá por IP o hostname al servidor.

lunes, 11 de febrero de 2019

Evitar borrado automático en /tmp en Ubuntu 18.04


Por defecto, el contenido del directorio /tmp es eliminado tras el arranque del sistema operativo en Ubuntu. En Ubuntu 18.04, el demonio systemd-tmpfiles es el encargado de esta acción.
Si se desea deshabilitar la eliminación automática del contenido de /tmp en el arranque, bastará con editar el fichero /usr/lib/tmpfiles.d/tmp.conf y comentar la siguiente linea:

jueves, 7 de febrero de 2019

Fallo al copiar, mover o borrar múltiples ficheros

Hoy vamos a exponer una situación anómala cuando se intentan eliminar, mover o copiar grandes cantidades de ficheros. Pongamos un ejemplo:
Queremos eliminar todos los archivos de un directorio. Este directorio contiene una cantidad enorme de archivos, por lo que nos encontramos con este fallo:
$ rm -f *
/bin/rm: cannot execute [Argument list too long]
Lo mismo ocurre si hacemos masivamente un cp o mv de estos ficheros.

lunes, 4 de febrero de 2019

Aprendiendo Vim #2

En el post anterior Aprendiendo Vim #1 hicimos una primera toma de contacto con Vim. Hoy vamos a ver algunos atajos de teclado para movernos por el fichero en edición.

Ir al principio del fichero

Si queremos movernos hasta el principio del fichero, bastará con pulsar gg en el modo normal, es decir, en el modo en el que nos encontramos al entrar en Vim o en el modo al que llegamos al pusar Esc estando en el modo inserción.

jueves, 31 de enero de 2019

Establecer timezone en Ubuntu 18.04


Tras instalar Ubuntu 18.04 server, una de las cosas a revisar es la fecha y hora de nuestro sistema.
Mediante el comando date podemos comprobar estos valores:
$ date
mié ene 30 21:54:35 UTC 2019
No obstante, no está ajustando correctamente el huso horario real, que en mi caso es España. Hay un retraso de una hora.

lunes, 28 de enero de 2019

Fallo al referenciar parámetros a partir de la décima posición

Como se vio en la entrada anterior, donde se explica cómo hacer uso de los parámetros que se le pasan a un script, se puede referenciar a los distintos parámetros de forma individual.
No obstante, surgirán problemas si intentamos referenciar los parámetros a partir de la posición 10.
Veamos un ejemplo:

jueves, 24 de enero de 2019

Variables bash #2

Como dijimos en un post anterior, bash tiene multitud de variables internas que podemos usar en nuestros scripts.
En esta ocasión nos vamos a centrar en las variables relacionadas con el paso de parámetros a nuestro script.

Parámetros

En bash podemos hacer referencia a cada parámetro pasado a un script de forma individual mediante las variables $1, $2, etc, que corresponden con el primer parámetro, segundo parámetro, etc.
Veamos un ejemplo:

lunes, 21 de enero de 2019

Aprendiendo Vim #1

Vim es un editor de textos que está presente en prácticamente todas las distribuciones Linux. Por este motivo, y por todas las funcionalidades que ofrece, es muy recomendable saber usarlo.
Con este post se inicia una serie dedicada a aprender las distintas opciones de Vim. La idea es aprender en cada entrada unas pocas combinaciones de teclas o funciones, con el objetivo de memorizarlas y ponerlas en práctica en cuanto tengamos la ocasión. Entrada tras entrada iremos aumentando los conocimientos sobre Vim hasta poder llegar a ser unos ninjas.

jueves, 17 de enero de 2019

Calcular fechas futuras o pasadas con date

Hoy vamos a ver una sencilla forma para calcular fechas futuras o pasadas respecto a la actual en el shell de Linux. Para ello usaremos el comando date.
Por hacer un breve repaso, el comando date devuelve la fecha y hora del momento actual:
$ date
mié ene 16 21:56:23 CET 2019
Podemos modificar el formato de salida para adecuarlo a nuestras necesidades:

lunes, 14 de enero de 2019

Ejecutar funciones bash dentro del comando find

El comando find es muy potente y se usa habitualmente en shell scripts. En ocasiones, se requiere ejecutar una serie de acciones por cada uno de los ficheros encontrados por find y esto puede resultar una tarea imposible. Veamos un ejemplo.
Propósito
Se requiere analizar todos los ficheros con extensión .py ubicados dentro de un directorio para detectar todos aquellos que no contienen la declaración de la codificación de texto utilizada. Para estos ficheros, añadir automáticamente la directiva siguiente:
# -*- coding: latin-1 -*-

jueves, 10 de enero de 2019

No guardar comandos ejecutados en historial de bash

Hoy vamos a ver un sencillo truco para evitar que los comandos ejecutados en nuestra sesión de bash pasen al fichero .bash_history. Será de utilidad cuando se quieren eliminar parte de las huellas de un acceso a un equipo o para evitar que otros sepan qué comandos ejecutó alguien en una conexión anterior.

lunes, 7 de enero de 2019

Usar tildes y eñes en Python

Python es un lenguaje de programación ampliamente usado para todo tipo de proyectos. Es usado también para realizar scripts de administración de sistemas que requieren una complejidad excesiva para realizarlos en bash, por lo que se usa casi un día sí y otro también.
Hoy vamos a ver cómo solucionar un problema que se da en ocasiones: cómo usar tildes, eñes y otros caracteres usados en castellano sin que nos de el siguiente error:
SyntaxError: Non-ASCII character '\xc3' in file ./script.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

jueves, 3 de enero de 2019

Crear un servidor web con un solo comando

Hoy vamos a ver cómo desplegar rápidamente un mini sevidor web para publicar una pequeña web.
Dado que se quiere publicar un fichero html y los requerimientos de la web son básicos, no instalaremos ningún servidor web al uso. Utilizaremos el comando ncat para ofrecer esta funcionalidad.